Excel-ийн захиалгат функцуудыг хэрхэн дибаг хийхийг сур

  • Үүнийг Хуваалц
Michael Brown

Та UDF-г хэрхэн үүсгэхийг аль хэдийн мэдэж байгаа тул (мөн та тэдгээрийг Excel-дээ ашиглахыг оролдсон байх гэж найдаж байна) бага зэрэг гүнзгийрүүлж, таны хэрэглэгчийн тодорхойлсон функц ажиллахгүй бол юу хийж болохыг харцгаая.

Захиалгат функц үүсгэх үед зарим асуудлыг шийдэхийн тулд та дибаг хийх шаардлагатай болно. Дараа нь та функц зөв ажиллаж байгаа гэдэгт итгэлтэй байж болно.

Бид дараах дибаг хийх аргуудыг судлах болно:

    Та захиалгат функц үүсгэх үед үргэлж боломж байдаг. та алдаа гаргах болно. Захиалгат функцууд нь ихэвчлэн нэлээд төвөгтэй байдаг. Тэгээд тэр дороо зөв ажиллаж эхэлдэггүй. Томъёо нь буруу үр дүн эсвэл #VALUE! алдаа. Стандарт Excel функцүүдээс ялгаатай нь та өөр мессежүүдийг харахгүй.

    Түүний мэдэгдэл тус бүр хэрхэн ажилладагийг шалгахын тулд захиалгат функцийг алхам алхмаар үзэх арга бий юу? Мэдээж! Үүнд дибаг хийх аргыг ашигладаг.

    Би танд тохируулсан функцийг дибаг хийх хэд хэдэн аргыг санал болгох бөгөөд ингэснээр та өөрт тохирохыг нь сонгох боломжтой болно.

    Жишээ нь бид захиалгат функцийг ашигладаг. GetMaxBetween -ыг заасан утгын муж дахь хамгийн их тоог тооцдог өмнөх нийтлэлүүдийн нэг:

    Функц GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i rngCells дахь NumRange тус бүрийн бүхэл тоогоор ReDim arrNums(rngCells.Count) vMax =NumRange Select Case vMax Case MinNum + 0.01 to MaxNum - 0.01 arrNums(i) = vMax i = i + 1 Case Else GetMaxBetween = 0 End Дараахыг сонгоно уу NumRange GetMaxBetween = WorksheetFunction.Max(arrNumctions) функцийг идэвхжүүлсэн байна. тоо бичсэн нүднүүдийн муж, мөн утгын дээд доод хязгаар.

    MsgBox функцийг чухал газруудад байрлуул

    Тооцоололын гүйцэтгэлийг хянахын тулд та харуулах боломжтой дэлгэцэн дээрх хамгийн чухал хувьсагчдын утгыг зөв газарт байрлуулна. Үүнийг гарч ирэх харилцах цонхнуудын тусламжтайгаар хийж болно.

    MsgBox нь хэрэглэгчдэд ямар нэгэн төрлийн мессеж үзүүлэхэд ашиглах харилцах цонх юм.

    MsgBox-ын синтакс нь бусад VBA функцуудтай төстэй:

    MsgBox(prompt [, buttons] [, title] [, helpfile, context])

    prompt нь шаардлагатай аргумент юм. Энэ нь харилцах цонхонд харагдах мессежийг агуулдаг. Үүнийг мөн хувьсагчийн утгыг харуулахад ашиглаж болно.

    Бусад бүх аргументууд нь сонголттой байдаг.

    [ товчлуур ] - аль товчлуур болон дүрсийг тодорхойлох MsgBox -д харуулав. Жишээлбэл, хэрэв бид vbOkOnly сонголтыг ашиглавал зөвхөн OK товчлуур гарч ирнэ. Та энэ аргументыг орхигдуулсан ч гэсэн энэ товчлуурыг өгөгдмөлөөр ашигладаг.

    [ гарчиг ] - энд та мессежийн талбарын гарчгийг зааж өгч болно.

    Засвараас сольж үзье. дасгал хийж, дибаг хийж эхлэх үгс. харуулахын тулдмессежийн хувьд, Case Else операторын өмнө хэрэглэгчийн тодорхойлсон GetMaxBetween функцийн код руу дараах мөрийг нэмнэ:

    MsgBox vMax,, "Count -" & i

    Үүнд бид дараах зүйлийг олж авах болно:

    Функц GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i As Integer ReDim arrNums(rngCells.) rngCells дахь NumRange бүрийн хувьд vMax = NumRange Тохиолдол сонгох vMax Case MinNum + 0.01 to MaxNum - 0.01 arrNums(i) = vMax i = i + 1 MsgBox vMax,, "Count -" & i Тохиолдол өөр GetMaxBetween = 0 Төгсгөл Дараагийн сонголтыг сонгоно NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) Төгсгөлийн функц

    Харилцах цонхны vMax хувьсагчийг ашигласнаар бид ямар тоо сонгох шалгуурыг хангаж байгааг харах болно. Бид тэдгээрийн хамгийн томыг нь сонгох боломжтой. "Тоолох -" & AMP илэрхийлэлтэй; Би гарчгийн мөрөнд бид хамгийн их утгыг тодорхойлохын тулд хэдэн тоог аль хэдийн сонгосон болохыг зааж өгдөг. Шинэ утга бүрт тоолуур нэмэгдэх болно.

    Бид UDF-ээ тохируулсны дараа дараах томьёог огнооны мужид хэрэглэнэ:

    = GetMaxBetween (A1:A6,10,50)

    Оруулах товчны дараа дарвал та доорх дэлгэцийн зураг дээрх шиг мессежийг харах болно:

    Энэ нь A1: A6 муж дахь 10-аас их боловч бага гэсэн шалгуурыг хангасан эхний тоо юм. 50-аас дээш.

    Та OK товчийг дарсны дараа 14 гэсэн тоотой хоёр дахь мессеж гарч ирнэ. Үлдсэн тоо нь сонголттой таарахгүй байна.шалгуур. Тиймээс функц гарч, хоёр утгын хамгийн том нь болох 17-г буцаана.

    MsgBox функцийг өөрийн тохируулсан функцийн хамгийн чухал хэсэгт ашиглаж болно. хувьсагчийн өөрчлөлт. Томоохон функцтэй, маш их тооцоололтой үед мессежийн хайрцаг нь маш хэрэгтэй байж болно. Энэ тохиолдолд кодын аль хэсэгт алдаа гарч байгааг тодорхойлоход хялбар байх болно.

    Зогсох цэгүүдийг тодорхойлж, алхам алхмаар гүйцэтгэнэ

    Та кодонд таслах цэгүүдийг нэмж болно. кодын гүйцэтгэл зогсох таны функц. Тиймээс та тооцооллын үйл явцыг алхам алхмаар дагаж болно. Ингэхдээ та хувьсагчдын утгууд хэрхэн өөрчлөгдөж байгааг харж болно.

    Таслах цэг нэмэхийн тулд курсорыг түр зогсоохыг сонгосон мэдэгдлийг агуулсан мөрөнд байрлуулна уу. Дараа нь хулганы баруун товчийг дараад Дбаг хийх -> Breakpoint -г асаах/унтраах эсвэл зүгээр л F9 товчийг дарна уу. Та мөн функцийн кодын зүүн талд байрлах босоо саарал хэсгийн хүссэн газраа дарж болно.

    Улаан тойрог гарч ирэхийг доорх дэлгэцийн зургаас харж болно. Тооцоолол зогсох кодын мөрийг улаанаар тодруулсан байна.

    Одоо функц ажиллаж байх үед VBA засварлагч цонх нээгдэнэ. Курсор таны зогссон цэг дээр байрлана.

    Хэрэв та функцийн кодын аль нэг хувьсагч дээр хулганы курсороо аваачвал тэдгээрийн одоогийн байгааг харж болно.утга:

    Тооцооллыг үргэлжлүүлэхийн тулд F5 товчийг дарна уу.

    Тэмдэглэл. Хагарлын цэгийн дараа та тооцооллын явцыг алхам алхмаар хянаж эхлэх боломжтой. Хэрэв та F8 товчийг дарвал VBA кодын зөвхөн нэг дараагийн мөр ажиллах болно. Сумтай шар шугам нь хамгийн сүүлд гүйцэтгэсэн кодын байрлал руу шилжинэ.

    Функцийн гүйцэтгэл дахин түр зогссон тул та хулганын курсорыг ашиглан функцийн бүх хувьсагчийн одоогийн утгыг харах боломжтой.

    Дараагийн F8 товчлуур нь биднийг нэг алхам урагшлуулах болно. . Тиймээс та тооцооллыг дуустал F8 товчийг дарж болно. Эсвэл F5 товчийг дараад дараагийн таслах цэг хүртэл тооцооллыг үргэлжлүүлнэ үү.

    Хэрэв алдаа гарвал алдаа гарсан кодын цэг дээр курсор зогсох болно. Мөн та гарч ирэх алдааны мессежийг харах болно. Энэ нь асуудлын шалтгааныг тодорхойлоход хялбар болгодог.

    Таны заасан таслах цэгүүд таныг файлыг хаах хүртэл хэрэгжинэ. Та үүнийг дахин нээх үед тэдгээрийг дахин тохируулах шаардлагатай болно. Хамгийн тохиромжтой арга биш гэж та бодож байна уу?

    Гэхдээ энэ асуудлыг шийдэж болно. Stop хэллэгийг шаардлагатай цэгүүдэд функцийн код руу оруулснаар та завсарлагааны цэгийг ашиглахтай адилаар програмын гүйцэтгэлийг зогсоож болно.

    VBA нь Stop мэдэгдэлтэй тулгарах үед энэ нь програмын гүйцэтгэлийг зогсоож, таны үйлдлийг хүлээх болно. Дараа нь хувьсагчдын утгыг шалгана ууҮргэлжлүүлэхийн тулд F5 товчийг дарна уу.

    Эсвэл дээр дурдсан функцийг алхам алхмаар гүйцэтгэхийн тулд F8 товчийг дарна уу.

    Stop хэллэг нь програмын нэг хэсэг тул таслах цэгийн нэгэн адил устгаагүй. Дибаг хийж дуусаад өөрөө устгана уу. Эсвэл өмнө нь нэг хашилт (') тавьж тайлбар болгон хувиргана уу.

    Debug.Print оператор ашиглан алдаа засах

    Та Debug.Print -г дотор байрлуулж болно. функцийн кодыг зөв газарт нь байрлуулна. Энэ нь мөчлөгөөр өөрчлөгддөг хувьсагчдын утгыг шалгахад тустай.

    Та Debug.Print-ийн гүйцэтгэлийн жишээг доорх дэлгэцийн агшин дээрээс харж болно.

    Мэдэгдэл Debug.Print i, vMax нь утгууд болон тэдгээрийн дарааллын дугааруудыг хэвлэнэ.

    Шууд цонхонд та сонгосон мужаас хоёр тоог (17 ба 14) харна. хязгаарыг тогтоож, тэдгээрийн дундаас дээд хязгаарыг сонгоно. 1 ба 2-р цифрүүд нь тухайн тоо сонгосон 2 мөчлөг дууссан гэсэн үг юм. Бид өмнө нь MsgBox -тай адил хамгийн чухал хувьсагчдын утгыг хардаг. Гэхдээ энэ нь функцийг зогсоосонгүй.

    Процедураас функцийг дуудах

    Та хэрэглэгчийн тодорхойлсон функцийг ажлын хуудасны нүднээс биш харин процедураас дуудаж болно. Энэ тохиолдолд бүх алдаа Visual Basic Editor цонхонд харагдах болно.

    Та хэрэглэгчийн тодорхойлсон GetMaxBerween функцийг дараах байдлаар дуудаж болно.процедур:

    Дэд тест() Dim x x = GetMaxBetween(Range ( "A1:A6" ), 10, 50) MsgBox(x) End Sub

    Курсорыг кодын аль ч хэсэгт байрлуулж F5 товчийг дарна уу. Хэрэв функцэд алдаа гараагүй бол та тооцооллын үр дүн бүхий гарч ирэх цонхыг харах болно.

    Алдаа гарсан тохиолдолд VBA засварлагч дээр харгалзах мессежийг харах болно. Тооцооллыг зогсоож, алдаа гарсан кодын мөрийг шараар тодруулна. Та хаана, яагаад алдаа гарсныг хялбархан тодорхойлж чадна.

    Энэ бол энэ. Одоо та өөрийн нэмэлт програмыг үүсгэж, Excel-д нэмсэн бөгөөд үүнд UDF ашиглах боломжтой. Хэрэв та илүү олон UDF ашиглахыг хүсвэл VBA засварлагчийн нэмэлт модулийн кодыг бичээд хадгална уу.

    Өнөөдөр л ийм байна. Бид захиалгат функцуудыг дибаг хийх янз бүрийн аргуудыг авч үзсэн бөгөөд тэдгээрийг ажлын дэвтэртээ хэрхэн ашиглах талаар сурсан. Эдгээр удирдамж танд хэрэг болно гэдэгт бид үнэхээр найдаж байна. Хэрэв танд асуулт байгаа бол энэ нийтлэлийн сэтгэгдэлд бичнэ үү.

    Майкл Браун бол програм хангамжийн хэрэгслийг ашиглан нарийн төвөгтэй процессуудыг хялбаршуулах хүсэл эрмэлзэлтэй, технологид дуртай хүн юм. Технологийн салбарт арав гаруй жил ажилласан туршлагатай тэрээр Microsoft Excel, Outlook, мөн Google Sheets болон Docs дээр ур чадвараа дээшлүүлсэн. Майклын блог нь өөрийн мэдлэг, туршлагаа бусадтай хуваалцах, бүтээмж, үр ашгийг дээшлүүлэхэд хялбар зөвлөмж, зааварчилгаа өгөх зорилготой юм. Та туршлагатай мэргэжилтэн эсвэл анхлан суралцаж байгаа эсэхээс үл хамааран Майклын блог нь эдгээр чухал програм хангамжийн хэрэгслээс хамгийн их ашиг хүртэх талаар үнэ цэнэтэй ойлголт, практик зөвлөгөөг санал болгодог.