Satura rādītājs
Tā kā jūs jau zināt, kā izveidot UDF (un, cerams, esat arī mēģinājis tās izmantot programmā Excel), iedziļināsimies nedaudz dziļāk un apskatīsim, ko var darīt, ja jūsu lietotāja definētā funkcija nedarbojas.
Lai atrisinātu dažas problēmas, izveidojot pielāgotu funkciju, visticamāk, būs nepieciešams palaist atkļūdošanu. Tad varēsiet pārliecināties, ka funkcija darbojas pareizi.
Mēs izpētīsim šādas atkļūdošanas metodes:
Kad izveidojat pielāgotu funkciju, vienmēr pastāv iespēja, ka kļūdīsieties. Pielāgotās funkcijas parasti ir diezgan sarežģītas. Un tās ne vienmēr sāk darboties pareizi uzreiz. Formula var atgriezt nepareizu rezultātu vai kļūdu #VALUE! Atšķirībā no standarta Excel funkcijām jūs neredzēsiet nekādus citus ziņojumus.
Vai ir veids, kā soli pa solim iziet cauri pielāgotai funkcijai, lai pārbaudītu, kā darbojas katrs tās paziņojums? Protams! Šim nolūkam tiek izmantota atkļūdošana.
Piedāvāšu jums vairākus pielāgotās funkcijas atkļūdošanas veidus, lai jūs varētu izvēlēties sev piemērotāko.
Kā piemēru mēs izmantojam pielāgoto funkciju GetMaxBetween no viena no mūsu iepriekšējiem rakstiem, kas aprēķina maksimālo skaitli norādītajā vērtību diapazonā:
Funkcija GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i As Integer ReDim arrNums(rngCells.Count) For Each NumRange In rngCells vMax = NumRange Select Case vMax Case MinNum + 0.01 To MaxNum - 0.01 arrNums(i) = vMax i = i + 1 Case Else GetMaxBetween = 0 End Select Next NumRange GetMaxBetween = WorksheetFunction.Max(rngNums) End FunctionFunkcijas argumenti ir šūnu diapazons, kurā tiek ierakstīti skaitļi, kā arī vērtību augšējā un apakšējā robeža.
Funkcijas MsgBox ievietošana svarīgās vietās
Lai uzraudzītu aprēķinu izpildi, varat ekrānā pareizajās vietās parādīt svarīgāko mainīgo lielumu vērtības. To var izdarīt, izmantojot uznirstošos dialoglodziņus.
MsgBox ir dialoglodziņš, ko var izmantot, lai parādītu lietotājam kādu ziņojumu.
MsgBox sintakse ir līdzīga citām VBA funkcijām:
MsgBox(prompt [, pogas] [, virsraksts] [, palīdzības fails, konteksts]). Tas ir obligāts arguments. Tajā ir ietverts dialoglodziņā redzamais ziņojums. To var izmantot arī, lai parādītu atsevišķu mainīgo vērtības.
Visi pārējie argumenti nav obligāti.
[ pogas ] - nosaka, kuras pogas un ikonas tiek parādītas sadaļā MsgBox Piemēram, ja mēs izmantojam opciju vbOkOnly , tad tikai LABI Šī poga tiks parādīta pat tad, ja šo argumentu esat izlaidis, šī poga tiks izmantota pēc noklusējuma.
[ virsraksts ] - šeit varat norādīt ziņojuma lodziņa nosaukumu.
Pāriesim no vārdiem uz praksi un sāksim atkļūdošanu. Lai parādītu ziņojumu, pievienojiet kodam šādu rindu GetMaxBetween lietotāja definēta funkcija pirms Lieta Cits gadījums operators:
MsgBox vMax,, "Count -" & amp; iLūk, kāds būs rezultāts:
Funkcija GetMaxBetween(rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums() Dim i As Integer ReDim arrNums(rngCells.Count) For Each NumRange In rngCells vMax = NumRange Select 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 FunctionIzmantojot vMax Mainīgais dialoglodziņā redzēsim, kuri skaitļi atbilst atlases kritērijiem, lai varētu atlasīt lielāko no tiem. Ar izteicienu "Count -" & amp; I virsraksta joslā norādām, cik skaitļus jau esam atlasījuši, lai noteiktu maksimālo vērtību. Ar katru jaunu vērtību skaitītājs tiks palielināts.
Kad esam iestatījuši savu UDF, datumu diapazonam piemērojam tālāk norādīto formulu:
= GetMaxBetween (A1:A6,10,50)
Pēc pogas Enter nospiešanas tiks parādīts ziņojums, kā parādīts zemāk redzamajā ekrānšā attēlā:
Tas ir pirmais skaitlis diapazonā A1: A6, kas atbilst kritērijiem: lielāks par 10, bet mazāks par 50.
Pēc tam, kad noklikšķinājāt uz OK, parādās otrs ziņojums ar skaitli 14. Pārējie skaitļi neatbilst atlases kritērijiem. Tāpēc funkcija iziet un atgriež lielāko no divām vērtībām, 17.
Portāls MsgBox funkciju var izmantot svarīgākajās jūsu pielāgotās funkcijas vietās, lai kontrolētu, kā mainās atsevišķu mainīgo vērtības. Ziņojuma lodziņi var būt ļoti noderīgi, ja jums ir liela funkcija un daudz aprēķinu. Šādā gadījumā jums būs viegli noteikt, kurā koda daļā rodas kļūda.
Noteikt apstāšanās punktus un veikt soli pa solim
Savas funkcijas kodam varat pievienot pārtraukuma punktus, kuros koda izpilde apstāsies. Tādējādi varat soli pa solim sekot līdzi aprēķina procesam. Šādi rīkojoties, varat redzēt, kā mainīgo vērtības mainās.
Lai pievienotu pārtraukuma punktu, novietojiet kursoru uz rindas, kurā ir paziņojums, kurā vēlaties ieturēt pauzi. Pēc tam noklikšķiniet ar peles labo pogu un izvēlieties Debug -> Pārslēgt pārtraukuma punktu vai vienkārši nospiediet F9 . Varat arī noklikšķināt uz vajadzīgās vietas vertikālajā pelēkajā laukumā pa kreisi no funkcijas koda.
Parādīsies sarkans aplis, kā redzams zemāk redzamajā ekrānattēlā. Sarkanā krāsā ir iezīmēta tā koda rinda, kurā aprēķins tiks apturēts.
Tagad, darbojoties funkcijai, tiks atvērts VBA redaktora logs. Kursors tiks novietots tajā vietā, kur jūs apstājāties.
Ja peles kursoru novietojat virs jebkura funkcijas kodā esošā mainīgā, varat redzēt tā pašreizējo vērtību:
Nospiediet F5, lai turpinātu aprēķinu.
Piezīme. Pēc pārtraukuma punkta var sākt soli pa solim sekot aprēķinu gaitai. Ja nospiežat pogu F8, tiks izpildīta tikai viena nākamā VBA koda rinda. Dzeltenā līnija ar bultiņu arī pārvietosies uz pēdējo izpildīto koda pozīciju.
Tā kā funkcijas izpilde atkal ir apturēta, varat apskatīt visu funkcijas mainīgo pašreizējās vērtības, izmantojot peles kursoru.
Nākamais F8 nospiedums mūs pārnesīs vienu soli uz priekšu. Tātad varat nospiest F8 līdz aprēķina beigām. Vai arī nospiest F5, lai turpinātu aprēķinu līdz nākamajam pārtraukuma punktam.
Ja rodas kļūda, kursors apstāsies tajā koda vietā, kur radusies kļūda. Un jūs redzēsiet arī uznirstošo kļūdas ziņojumu. Tas ļauj viegli noteikt problēmas cēloni.
Jūsu norādītie pārtraukuma punkti tiks piemēroti, līdz jūs aizvērsiet failu. Atkārtoti atverot failu, jums tie būs jāiestata no jauna. Tas nav ērtākais veids, vai ne?
Tomēr šo problēmu var atrisināt. Ievietojiet a Pārtraukt paziņojumu funkcijas kodā vajadzīgajos punktos, un programmas izpildi var apturēt tāpat kā tad, ja tiek izmantoti pārtraukuma punkti.
Kad VBA sastopas ar Pārtraukt paziņojums apturēs programmas izpildi un gaidīs jūsu rīcību. Pārbaudiet mainīgo vērtības un pēc tam nospiediet F5, lai turpinātu.
Vai arī nospiediet F8, lai izpildītu funkciju soli pa solim, kā aprakstīts iepriekš.
Portāls Pārtraukt paziņojums ir programmas daļa, tāpēc netiek dzēsts, kā tas ir pārtraukuma punkta gadījumā. Kad esat pabeidzis atkļūdošanu, dzēsiet to pats. Vai arī pārveidojiet to par komentāru, pirms tā rakstot vienu pēdiņu (').
Debugēšana, izmantojot Debug.Print operatoru
Varat novietot Debug.Print funkciju kodā pareizajā vietā. Tas ir noderīgi, lai pārbaudītu cikliski mainīgo mainīgo vērtības.
Debug.Print veiktspējas piemērs redzams zemāk redzamajā ekrāna attēlā.
Paziņojums Debug.Print i, vMax izdrukā vērtības un to kārtas numurus.
Immediate logā redzami divi skaitļi (17 un 14) no atlasītā diapazona, kas atbilst iestatītajām robežām un no kuriem tiks atlasīts maksimālais. 1 un 2 cipari nozīmē, ka funkcija ir pabeigusi 2 ciklus, kuros tika atlasīti skaitļi. Mēs redzam svarīgāko mainīgo lielumu vērtības, tāpat kā iepriekš ar MsgBox . Taču tas neapturēja funkciju.
Funkcijas izsaukšana no procedūras
Lietotāja definētu funkciju var izsaukt nevis no darblapas šūnas, bet gan no procedūras. Šajā gadījumā visas kļūdas tiks parādītas Visual Basic redaktora logā.
Tālāk aprakstīts, kā no procedūras var izsaukt lietotāja definēto funkciju GetMaxBerween:
Sub Tests() Dim x x = GetMaxBetween(Range ("A1:A6" ), 10, 50) MsgBox(x) End SubNovietojiet kursoru jebkurā vietā kodā un nospiediet F5 . Ja funkcijā nav kļūdas, tiks parādīts uznirstošais logs ar aprēķina rezultātu.
Kļūdas gadījumā VBA redaktorā tiks parādīts attiecīgs ziņojums. Aprēķins tiks pārtraukts, un koda rinda, kurā radusies kļūda, tiks izcelta dzeltenā krāsā. Jūs varat viegli noteikt, kur un kāpēc radusies kļūda.
Tas ir viss. Tagad esat izveidojis savu pievienojumprogrammu, pievienojis to programmai Excel un varat tajā izmantot UDF. Ja vēlaties izmantot vairāk UDF, vienkārši uzrakstiet kodu pievienojumprogrammas modulī VBA redaktorā un saglabājiet to.
Uz šodienu tas ir viss. Esam aplūkojuši dažādus pielāgotu funkciju atkļūdošanas veidus un iemācījušies, kā tās izmantot savā darbgrāmatā. Ļoti ceram, ka šīs vadlīnijas jums būs noderīgas. Ja jums ir kādi jautājumi, rakstiet komentāros pie šī raksta.