Efnisyfirlit
Eins og þú veist nú þegar hvernig á að búa til UDF (og ég vona að þú hafir líka reynt að nota þau í Excel), skulum við kafa aðeins dýpra og sjá hvað er hægt að gera ef notendaskilgreind aðgerð þín virkar ekki.
Til þess að leysa sum vandamál þegar þú býrð til sérsniðna aðgerð þarftu líklegast að keyra villuleit. Þá geturðu verið viss um að aðgerðin virki rétt.
Við munum kanna eftirfarandi villuleitaraðferðir:
Þegar þú býrð til sérsniðna aðgerð er alltaf möguleiki að þú gerir mistök. Sérsniðnar aðgerðir eru venjulega nokkuð flóknar. Og þeir byrja ekki alltaf að virka rétt strax. Formúlan gæti skilað rangri niðurstöðu eða #VALUE! villa. Ólíkt venjulegum Excel aðgerðum muntu ekki sjá nein önnur skilaboð.
Er leið til að fara í gegnum sérsniðna aðgerð skref fyrir skref til að athuga hvernig hver staðhæfing hennar virkar? Jú! Villuleit er notuð fyrir þetta.
Ég mun bjóða þér nokkrar leiðir til að kemba sérsniðna aðgerðina þína svo að þú getir valið þann sem virkar fyrir þig.
Sem dæmi notum við sérsniðna aðgerðina GetMaxBetween úr einni af fyrri greinum okkar sem reiknar út hámarksfjölda á tilgreindu gildissviði:
Virkni GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i Sem heiltala ReDim arrNums(rngCells.Count) Fyrir hvert NumRange In rngCells vMax =NumRange Veldu Case vMax Case MinNum + 0,01 To MaxNum - 0,01 arrNums(i) = vMax i = i + 1 Case Else GetMaxBetween = 0 End Veldu Next NumRange GetMaxBetween = WorksheetFunction.Max(Endafallið eru) svið reita þar sem tölur eru skrifaðar, sem og efri og neðri mörk gilda.
Setjaðu MsgBox fallið á mikilvægum stöðum
Til þess að fylgjast með framkvæmd útreikninga geturðu birt gildi mikilvægustu breytanna á skjánum á réttum stöðum. Þetta er hægt að gera með sprettiglugga.
MsgBox er svargluggi sem þú getur notað til að sýna notanda einhvers konar skilaboð.
Setjafræði MsgBox er svipað öðrum VBA aðgerðum:
MsgBox(kvaðning [, hnappar] [, titill] [, hjálparskrá, samhengi])kvaðning er nauðsynleg rök. Það inniheldur skilaboðin sem þú sérð í glugganum. Það er líka hægt að nota það til að sýna gildi einstakra breyta.
Allar aðrar röksemdir eru valfrjálsar.
[ hnappar ] - ákvarðar hvaða hnappar og tákn eru birtist í MsgBox . Til dæmis, ef við notum valkostinn vbOkOnly , þá mun aðeins OK hnappurinn birtast. Jafnvel þótt þú hafir misst af þessari röksemdafærslu er þessi hnappur notaður sjálfgefið.
[ titill ] - hér geturðu tilgreint titil skilaboðareitsins.
Við skulum skipta frá orð til að æfa og byrja að kemba. Til að sýnaskilaboð, bættu eftirfarandi línu við kóðann á GetMaxBetween notendaskilgreindri aðgerðinni á undan Case Else rekstraraðilanum:
MsgBox vMax,, "Count -" & iHér er það sem við fáum í niðurstöðunni:
Virkni GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i As Integer ReDim arrNums(rngCells.Count) Fyrir hvert NumRange In rngCells vMax = NumRange Veldu Case vMax Case MinNum + 0,01 To MaxNum - 0,01 arrNums(i) = vMax i = i + 1 MsgBox vMax,, "Count -" & i Case Else GetMaxBetween = 0 End Select Next NumRange GetMaxBetween = WorksheetFunction.Max(arrNums) End FunctionMeð því að nota vMax breytuna í svarglugganum munum við sjá hvaða tölur uppfylla skilyrðin fyrir vali, svo að við getum valið þann stærsta af þeim. Með orðatiltækinu "Count -" & amp; I í titilstikunni tilgreinum við hversu margar tölur við höfum þegar valið til að ákvarða hámarksgildi. Teljarinn verður aukinn með hverju nýju gildi.
Þegar við höfum UDF settið okkar notum við formúluna hér að neðan á dagsetningarbilinu:
= GetMaxBetween (A1:A6,10,50)
Eftir Enter hnappinn er ýtt á þá sérðu skilaboð eins og á skjámyndinni hér að neðan:
Þetta er fyrsta talan á bilinu A1: A6 sem uppfyllir skilyrðin: stærra en 10 en minna en 50.
Eftir að þú smellir á OK birtast önnur skilaboð með númerinu 14. Restin af tölunum passa ekki við valiðviðmið. Þess vegna hættir aðgerðin og skilar því stærsta af tveimur gildum, 17.
Hægt er að nota MsgBox aðgerðina á mikilvægustu stöðum í sérsniðnu falli til að stjórna því hvernig gildin einstakra breyta breytast. Skilaboðakassar geta verið mjög gagnlegir þegar þú ert með stóra virkni og mikla útreikninga. Í þessu tilviki verður auðvelt fyrir þig að ákvarða í hvaða hluta kóðans villan á sér stað.
Ákvarða stöðvunarpunkta og framkvæma skref fyrir skref
Þú getur bætt brotpunktum við kóðann á aðgerðin þín þar sem keyrsla kóðans hættir. Svo þú getur fylgst með útreikningsferlinu skref fyrir skref. Með því að gera það geturðu séð hvernig gildi breytanna breytast.
Til að bæta við brotpunkti skaltu setja bendilinn á línuna sem inniheldur setninguna þar sem þú velur að gera hlé. Hægrismelltu síðan og veldu Kembiforrit -> Skiptu um brotpunkt eða ýttu bara á F9 . Þú getur líka smellt á viðkomandi stað á lóðrétta gráa svæðinu vinstra megin við aðgerðakóðann.
Rauður hringur birtist eins og þú sérð á skjámyndinni hér að neðan. Kóðalínan þar sem útreikningurinn verður stöðvaður er auðkennd með rauðu.
Nú opnast VBA ritstjóraglugginn þegar aðgerðin er í gangi. Bendillinn verður staðsettur á þeim stað þar sem þú hættir.
Ef þú heldur músarbendilinn yfir einhverja af breytunum í fallkóðanum geturðu séð núverandigildi:
Ýttu á F5 til að halda áfram útreikningnum.
Athugið. Eftir brotpunktinn geturðu byrjað að fylgjast með framvindu útreikninganna skref fyrir skref. Ef þú ýtir á F8 hnappinn verður aðeins ein næsta lína af VBA kóðanum keyrð. Gula línan með ör mun einnig færast í síðustu keyrðu kóðastöðuna.
Þar sem gert er hlé á framkvæmd fallsins aftur geturðu skoðað núverandi gildi allra breyta fallsins með því að nota músarbendilinn.
Næsta ýta á F8 mun taka okkur eitt skref fram á við. . Svo þú getur ýtt á F8 til loka útreikningsins. Eða ýttu á F5 til að halda útreikningnum áfram þar til næsta brotpunkt.
Ef villa kemur upp verður bendillinn stöðvaður á þeim stað í kóðanum þar sem villan kom upp. Og þú munt líka sjá sprettigluggaskilaboð. Þetta gerir það auðvelt að ákvarða orsök vandans.
Brúpunktarnir sem þú tilgreinir verða notaðir þar til þú lokar skránni. Þegar þú opnar það aftur þarftu að stilla þau aftur. Ekki hentugasta aðferðin, finnst þér ekki?
Hins vegar er hægt að leysa þetta vandamál. Settu Stop setningu inn í fallkóðann á nauðsynlegum stöðum og þú getur stöðvað keyrslu forritsins á sama hátt og þegar brotpunktar eru notaðir.
Þegar VBA rekst á Stop yfirlýsingu mun það stöðva framkvæmd forritsins og bíða eftir aðgerð þinni. Athugaðu gildi breytanna, þáýttu á F5 til að halda áfram.
Eða ýttu á F8 til að uppfylla aðgerðina skref fyrir skref eins og lýst er hér að ofan.
Stop setningin er hluti af forritinu og er því ekki eytt, eins og raunin er með brot. Þegar þú ert búinn að kemba skaltu fjarlægja það sjálfur. Eða breyttu því í athugasemd með því að setja eina gæsalappa á undan henni (').
Kembiforrit með Debug.Print stjórnanda
Þú getur sett Debug.Print í aðgerðakóði á réttum stað. Þetta er gagnlegt til að athuga gildi breyta sem eru að breytast í lotu.
Þú getur séð dæmi um árangur Debug.Print á skjámyndinni hér að neðan.
Yfirlýsing Debug.Print i, vMax prentar gildi og raðtölur þeirra.
Í Immediate glugganum sérðu tvær tölur (17 og 14) úr völdu sviði, sem samsvarar sett mörk og meðal þeirra verður hámarkið valið. Tölur 1 og 2 þýðir að fallið hefur lokið 2 lotum þar sem tölurnar voru valdar. Við sjáum gildi mikilvægustu breytanna, eins og við gerðum áðan með MsgBox . En þetta stöðvaði ekki fallið.
Hringdu í fall úr verklagi
Þú getur kallað notendaskilgreint fall ekki úr reit í vinnublaðinu, heldur frá verklagi. Í þessu tilviki munu allar villur birtast í Visual Basic Editor glugganum.
Hér er hvernig þú getur kallað notendaskilgreinda aðgerðina GetMaxBerween frá aaðferð:
Sub Test() Dim x x = GetMaxBetween(Range ( "A1:A6"), 10, 50) MsgBox(x) End SubStaðsettu bendilinn hvar sem er í kóðanum og ýttu á F5 . Ef engin villa er í aðgerðinni muntu sjá sprettiglugga með útreikningsniðurstöðu.
Ef villu kemur upp muntu sjá samsvarandi skilaboð í VBA ritlinum. Útreikningurinn verður stöðvaður og kóðalínan þar sem villan kom upp verður auðkennd með gulu. Þú getur auðveldlega greint hvar og hvers vegna villan kom upp.
Það er allt og sumt. Nú hefur þú búið til þína eigin viðbót, bætt því við Excel og þú getur notað UDF í henni. Ef þú vilt nota fleiri UDF, skrifaðu bara kóðann í viðbótareininguna í VBA ritlinum og vistaðu hann.
Það er allt í dag. Við höfum farið yfir mismunandi leiðir til að kemba sérsniðnar aðgerðir og lært hvernig á að nota þær í vinnubókinni þinni. Við vonum virkilega að þér finnist þessar leiðbeiningar gagnlegar. Ef þú hefur einhverjar spurningar skaltu skrifa í athugasemdir við þessa grein.