Lietotāji bieži sastopas ar dažāda veida kļūdām VBA. Zemāk mēs piedāvājam vairākas stratēģijas to risināšanai un risināšanai. Mēs izskatīsim paņēmienus, kurus varat izmantot, lai pārbaudītu kodu testēšanas laikā, kā arī kļūdu uztveršanas metodes izpildes laikā.
Dažādu veidu kļūdu pārbaude un izsekošana VBA kodā var būt laikietilpīga un nomākta. Tas nav nekas neparasts dzirdēt programmētājus. Programmēšana Programmēšana ir instrukciju rakstīšanas process datoram. Tas ir līdzīgs recepte cilvēkiem. Recepte satur darbību sarakstu, kurā teikts, ka vairāk nekā 30% laika tiek tērēti testēšanai.
Laika gaitā jums labāk izdosies izvairīties no kļūdām, taču maz ticams, ka jūs kādreiz pirmo reizi uzrakstīsit perfektu kodu. Uzzinot, kā izvairīties no VBA kļūdām, tās novērst un izsekot, jūs ietaupīsiet daudz laika nākotnē.
VBA kļūdu veidi
Lai viss būtu vieglāk, kodēšanas kļūdu veidi ir iedalīti trīs grupās. Katrai grupai mēs izpētīsim dažus piemērus un pēc tam apspriedīsim, kā jūs tos varētu izmeklēt un atrisināt.
1. Sintakses kļūdas - Konkrēta koda rindiņa nav uzrakstīta pareizi
2. Sastādīt kļūdas - Jautājumi, kas notiek, saliekot koda rindas, lai gan šķiet, ka atsevišķām koda rindām ir jēga
3. Izpildlaika kļūdas - Ja kods parasti ir pareizs, bet lietotāja veiktā darbība vai izmantotie dati rada negaidītas kļūdas.
Kas ir sintakses kļūdas?
Sintakses kļūdas ir VBA veids, kā noteikt, vai jūsu kodam ir jēga, visvienkāršākajos līmeņos. Mēs varam veikt vienkāršu salīdzinājumu ar noteikumiem, kā rakstīt teikumu angļu valodā:
- A priekšmets ir nepieciešams.
- A darbības vārds ir nepieciešams.
- A kapitāls sākumā ir nepieciešama vēstule.
- Pieturzīmes ir nepieciešama beigās.
- Objekti, īpašības vārdi un citas gramatiskās pazīmes nav obligātas.
Džeinaatrasts 18 kļūdas viņas VBA kodā.
Līdzīgā veidā VBA uzliek noteiktus noteikumus attiecībā uz to, kas nepieciešams noteiktās situācijās. Piemēram, uzsākot pamata nosacījuma IF priekšrakstu savā kodā, IF priekšraksta pirmajai rindai ir jāatkārto šādi sintakses noteikumi;
- Tam jāsākas ar Ja
- Nākamajam jābūt a loģisks tests , piemēram, x> 10
- Visbeidzot, tam jābeidzas ar vārdu pēc tam
JaSkaitļu kļūdas> 20pēc tam
Ja pārkāpjat iepriekš minētos angļu vai VBA noteikumus, gramatika (angļu valoda) vai sintakse (VBA) tiek uzskatīta par nepareizu.
Kā identificēt sintakses kļūdu
VBA redaktors sarkanā krāsā izceļ sintakses kļūdas, ļaujot tās viegli identificēt un novērst. Turklāt, ja mēģināt palaist kodu vai sākt jaunu rindu, jums tiks parādīts zemāk redzamais sintakses kļūdas ziņojums.
Pamata sintakses kļūda:
Sintakses kļūdas ziņojuma lodziņš:
Lai pārliecinātos, ka pārbaudes notiek rakstīšanas laikā, izvēlnē Opcijas iespējojiet automātisko sintakses pārbaudi.
Kā atrisināt sintakses kļūdas
Sintakses kļūdas apzīmē kļūdas, kā tiek rakstīta konkrēta koda rinda. Pirms koda palaišanas tie ir jānovērš. Pēc pieredzes sarkanais teksts būs viss, kas nepieciešams kļūdas novērošanai. Bet, ja jūs joprojām esat iestrēdzis, vienkārši tiešsaistē meklējiet “if utasításu sintakse vba” vai jebkuru variantu, kas atbilst jūsu vajadzībām, un jūs atradīsit daudz piemēru konkrētai rindai, kuru mēģināt rakstīt.
Kas ir kompilēšanas kļūdas?
Kompilēšanas kļūdas attiecas uz plašāku VBA kļūdu grupu, kas ietver sintakses kļūdas. Kompilēšanas kļūdas arī identificē problēmas ar jūsu kodu, ja to aplūko kopumā. Katras atsevišķās rindas sintakse var būt pareiza, taču, saliekot kopā, koda rindām nav jēgas. Apkopošanas kļūdas tiek izceltas, kad apkopojat vai palaižat savu kodu.
Kā identificēt kompilēšanas kļūdu
Palaidot VBA kodu, kompilēšanas kļūdas tiks parādītas VBA dialoglodziņā, kā norādīts tālāk sniegtajos piemēros.
Alternatīvi, ja jūsu projekts ir garš vai sarežģīts un ietver vairākas rutīnas, var būt noderīgi apkopot kodu pirms tā palaišanas. Tas novērš situācijas, kad puse no jūsu koda darbojas veiksmīgi un pēc tam tiek parādīta kļūda. Varat apkopot savu VBA kodu, noklikšķinot uz Atkļūdošanas izvēlne → Kompilēt VBA projektu.
1. piemērs
Kompilēšanas kļūda trūkstošai IF priekšraksta daļai “End if”. Katra atsevišķa koda rindiņa ir pareiza, taču kopā tās neatspoguļo pilnīgu IF paziņojumu.
2. piemērs
Šajā piemērā VBA kompilēšanas process ir atklājis sintakses kļūdu, kas izcelta sarkanā krāsā. VBA norāda, ka zemāk redzamajam kodam trūkst funkcijas aizvēršanas kronšteina.
3. piemērs
Kompilēšanas kļūdas ir izplatītas, izmantojot Option Explicit, un rodas, ja mainīgais nav skaidri definēts. Ja ir aktivizēta opcija Explicit, ir nepieciešams paziņojums Dim, lai deklarētu visus mainīgos, pirms tos var izmantot jūsu kodā.
Kā atrisināt kompilēšanas kļūdas
VBA kompilēšanas kļūdas neļaus skartajām rutīnām darboties. Kamēr tos neizlabojat, VBA nevar pareizi interpretēt jūsu kodu. Kļūdu ziņojumu lodziņos bieži ir noderīgāki padomi nekā sintakses kļūdās.
Ja jums uzreiz nav skaidrs, kāda ir kļūda no kļūdas, mēģiniet izmantot Microsoft palīdzības centru, lai iegūtu priekšstatu par to, kā tieši jūsu paziņojums vai funkcija jāraksta. Šeit ir Microsoft vietnes kļūdas ziņojuma “Bloķēt, ja bez beigām, ja” piemērs.
Kas ir izpildlaika kļūdas?
Kad esat novērsis sintakses kļūdas un apkopojis kļūdas, varat sākt pareizi testēt vai palaist kodu, lai redzētu, cik labi tas izpilda vēlamās darbības vai aprēķinus. Pārbaudes periodu vai koda tiešo izpildi mēs saucam par “izpildlaiku”.
Izpildlaika kļūdas nevar noteikt, vienkārši apskatot kodu; tie ir jūsu koda mijiedarbības rezultāts ar konkrētajiem ievadiem vai datiem tajā laikā.
Izpildlaika kļūdas bieži izraisa neparedzētu datu pārsūtīšana uz VBA kodu, datu tipu neatbilstība, dalīšana ar negaidītām nullēm un definēto šūnu diapazonu neesamība. Izpildlaika kļūdas ir arī visdažādākās un sarežģītākās, lai tās izsekotu un novērstu.
Kā identificēt izpildlaika kļūdas
VBA atkļūdošana VBA: kā atkļūdot kodu Rakstot un palaižot VBA kodu, lietotājam ir svarīgi uzzināt, kā atkļūdot koda kļūdas. Excel lietotāja cerības ir, ka koda funkcija izceļ problēmas kodu dzeltenā krāsā un dod mums nelielu pavedienu par to, kas rada problēmu.
1. piemērs
Kaut arī zemāk redzamais kods vienkārši sadala vienu skaitli ar otru, dažos gadījumos tas nebūs iespējams. Piemēram, ja šūna A1 = 2 un šūna A2 = 0, nav iespējams dalīt ar nulli. Izpildlaika kļūdu lodziņā ir atkļūdošanas poga, kas izceļ problēmas kodu.
2. piemērs
Šajā piemērā es izveidoju masīvu, lai savā darblapā apkopotu n uzņēmumu nosaukumus. Pēc tam es mēģināju atsaukties uz sesto vienumu, kas var darboties vai var nebūt. VBA parāda izpildlaika kļūdas ziņojumu un ļauj man nospiest atkļūdošanu, lai izpētītu problēmu.
Kad esmu nospiedis Atkļūdot, VBA izceļ koda rindu, kas rada problēmu. Tagad man ir jāizmanto ziņojums “Absts ārpus diapazona”, lai noskaidrotu, kas notiek nepareizi. Kļūda ārpus diapazona parasti nozīmē, ka jūsu kods principā ir labs, bet nevar atrast konkrēto meklēto vienumu. Visbiežāk tas notiks, atsaucoties uz šūnām vai diapazoniem programmā Excel, kā arī uz masīviem jūsu VBA kodā.
Lai pārliecinātos, ka atkļūdošanas funkcija ir iespējota, izvēlnē Opcijas> Vispārīgi> Kļūdu slazdošana noklusējuma statusam jābūt “Pārtraukt neapstrādātās kļūdas”. Atstājiet opciju atzīmētu.
Kā atrisināt izpildlaika kļūdas
Tā kā izpildlaika kļūdas pēc būtības ir dažādas un sarežģītas, arī risinājumi ir dažādi. Divas galvenās izpildlaika kļūdu samazināšanas metodes ir šādas:
Ieslodzījuma kļūda
Ieteicams pārdomāt, kādus iespējamos scenārijus var sastapt jūsu kods. Vēl labāk ir pārbaudīt kodu prakses datos vai ar reāliem lietotājiem. Tas ļaus jums atpazīt šādus scenārijus savā VBA, kodu sadalot dažādos rezultātos atkarībā no kļūdām.
1. piemērs
Šeit rinda ‘On Error Resume Next’ liek kodu turpināt, pat ja tiek konstatēta kļūda. Pēc tam mēs izmantojam testu If Err> 0, lai izveidotu brīdinājuma ziņojumu tikai tad, ja pastāv kļūda. “On Error Goto 0” atiestata VBA noklusējuma stāvoklī.
2. piemērs
Šeit kods aprēķina ienākumus dienā, pamatojoties uz mēneša ienākumiem un noteiktu dienu skaitu. Ja dienu skaits nav norādīts, mēs pārejam uz noteiktu kodu mūsu kodā ar nosaukumu “NoDaysInMonthProvided:”, kur kā pamatpieņēmumu izmantojam mēneša vidējo dienu skaitu. Lai gan tas ir vienkāršots, tas skaidri parāda, kā notvert kļūdu un pāriet uz citu koda punktu.
Notīrīt lietotāja instrukcijas
Skaidra dokumentācija un darblapu etiķetes nodrošinās, ka jūsu lietotāji mijiedarbojas ar jūsu modeli tā, kā esat iecerējis. Tas palīdzēs tos novērst, ievadot tekstu, nevis skaitļus, vai atstājot nulles, kas vēlāk var ietekmēt jūsu kodu.
Kopsavilkums
VBA ir trīs galvenie kļūdu veidi, kas dažādos veidos var ietekmēt jūsu kodu. Ir svarīgi aktivizēt VBA kļūdu noteikšanas iespējas, piemēram, atkļūdotāju un automātisko sintakses pārbaudi. Tie palīdzēs jums noteikt kļūdu atrašanās vietu un raksturu.
Vairāk resursu
Finanses ir oficiālais globālā sertificētā banku un kredīta analītiķu (CBCA) ™ CBCA ™ sertifikāta nodrošinātājs. Sertificētā banku un kredītu analītiķu (CBCA) ™ akreditācija ir pasaules mēroga kredītanalītiķu standarts, kas aptver finanses, grāmatvedību, kredīta analīzi, naudas plūsmas analīzi. , derību modelēšana, aizdevuma atmaksa un citas darbības. sertifikācijas programma, kas izstrādāta, lai palīdzētu ikvienam kļūt par pasaules klases finanšu analītiķi. Lai turpinātu virzīties uz priekšu, noderēs tālāk norādītie papildu resursi:
- #REF Excel kļūdas #REF Excel kļūdas #REF Excel kļūdas izklājlapās rada lielas problēmas. Uzziniet, kā atrast un labot #REF kļūdas programmā Excel šajā ātrajā apmācībā ar piemēriem un ekrānuzņēmumiem. #REF! kļūda ("ref" nozīmē atsauci) ir ziņojums, ko programma Excel parāda, kad formula atsaucas uz šūnu, kuras vairs nav, ko izraisa šūnu dzēšana,
- Excel VBA piemēri Excel VBA piemēri Excel VBA ļauj lietotājam izveidot makro, kas automatizē procesus programmā Excel. Šajā rokasgrāmatā tiks izmantoti Excel VBA piemēri, lai parādītu, kā ierakstīt makro, iestatot makro, kā deklarēt mainīgos un kā atsaukties uz datiem.
- Padomi VBA rakstīšanai programmā Excel Padomi VBA rakstīšanai programmā Excel Šeit ir deviņi padomi, kā rakstīt VBA programmā Excel. VBA for Excel iepazīstina ar neskaitāmām pielāgotu aprēķinu un automatizācijas iespējām.
- VBA metodes VBA metodes VBA metode ir koda gabals, kas pievienots VBA objektam, mainīgajam vai datu atsaucei un kas Excel norāda, kāda darbība jāveic attiecībā uz šo objektu. Kopēšana, ielīmēšana un atlase ir tikai daži VBA metožu piemēri, kurus var veikt.