Vartotojai dažnai susiduria su įvairių tipų klaidomis VBA. Toliau siūlome keletą strategijų, kaip jas spręsti ir išspręsti. Išnagrinėsime metodus, kuriuos galite naudoti apklausdami savo kodą testavimo metu, taip pat klaidų gavimo vykdymo metu metodus.
Įvairių tipų klaidų VBA kode testavimas ir nustatymas gali užimti daug laiko ir varginti. Neretai tenka girdėti programuotojus. Programavimas Programavimas yra instrukcijų, kurias turi atlikti kompiuteris, rašymo procesas. Jis panašus į receptą žmonėms. Recepte pateikiamas veiksmų sąrašas, kuriame teigiama, kad daugiau nei 30% jų laiko skiriama bandymams.
Laikui bėgant, jūs geriau išvengsite klaidų, tačiau mažai tikėtina, kad pirmą kartą parašysite tobulą kodą. Sužinoję, kaip išvengti VBA klaidų, jas pašalinti ir jas surasti, ateityje sutaupysite daug laiko.
VBA klaidų tipai
Kad būtų lengviau, kodavimo klaidų tipus skirstėme į tris grupes. Kiekvienai grupei ištirsime keletą pavyzdžių ir aptarsime, kaip galėtumėte juos ištirti ir išspręsti.
1. Sintaksės klaidos - Neteisingai parašyta konkreti kodo eilutė
2. Sudaryti klaidas - Problemos, kylančios sudedant kodo eilutes, nors atskiros kodo eilutės atrodo prasmingos
3. Klaida vykdymo metu - Kai kodas iš esmės yra teisingas, tačiau vartotojo atliktas veiksmas ar naudojami duomenys sukelia netikėtų klaidų.
Kas yra sintaksės klaidos?
Sintaksės klaidos yra VBA būdas pasakyti, ar jūsų kodas yra prasmingas, pačiais paprasčiausiais lygmenimis. Galime paprastai palyginti sakinio rašymo anglų kalba taisykles:
- A subjektas yra reikalinga.
- A veiksmažodis yra reikalinga.
- A kapitalo pradžioje reikalingas laiškas.
- Skyryba yra reikalaujama pabaigoje.
- Objektai, būdvardžiai ir kitos gramatikos ypatybės yra neprivalomos.
Džeinėrasta 18 klaidų jos VBA kode.
Panašiai VBA nustato tam tikras taisykles tam, ko reikia tam tikrose situacijose. Pvz., Inicijuodami pagrindinį sąlyginį IF sakinį savo kode, turite pakartoti šias sintaksės taisykles pirmoje IF sakinio eilutėje;
- Tai turi prasidėti Jei
- Kitas turi būti a loginis testas , pvz., x> 10
- Pagaliau jis turi baigtis žodžiu tada
JeiSkaičiaus klaidos> 20tada
Jei pažeidžiate aukščiau nurodytas anglų ar VBA taisykles, jūsų gramatika (anglų k.) Arba sintaksė (VBA) laikoma neteisinga.
Kaip nustatyti sintaksės klaidą
VBA redaktorius raudonai paryškina sintaksės klaidas, todėl galite jas lengvai atpažinti ir išspręsti. Be to, jei bandysite paleisti kodą arba pradėti naują eilutę, jums bus pateiktas toliau pateiktas sintaksės klaidos pranešimas.
Pagrindinė sintaksės klaida:
Sintaksės klaidos pranešimų laukelis:
Norėdami įsitikinti, kad patikrinimai atliekami rašant, meniu Parinktys įjunkite parinktį „Automatinis sintaksės tikrinimas“.
Kaip išspręsti sintaksės klaidas
Sintaksės klaidos reiškia klaidas, kai rašoma konkreti jūsų kodo eilutė. Jie turi būti pataisyti, kad galėtumėte paleisti savo kodą. Turint patirties, raudonas tekstas bus viskas, ko jums reikia norint pastebėti klaidą. Bet jei vis tiek esate įstrigęs, tiesiog internete ieškokite „if teiginio sintaksė vba“ ar bet kurio varianto, atitinkančio jūsų poreikius, ir rasite daugybę konkrečios eilutės, kurią bandote parašyti, pavyzdžių.
Kas yra kompiliavimo klaidos?
Kompiliavimo klaidos reiškia platesnę VBA klaidų grupę, kuri apima sintaksės klaidas. Kompiliavimo klaidos taip pat nustato jūsų kodo problemas, vertinant jas kaip visumą. Kiekvienos eilutės sintaksė gali būti teisinga, tačiau sudėjus kodo eilutes nėra prasmės. Kompiliavimo klaidos paryškinamos, kai kompiliuojate ar vykdote kodą.
Kaip nustatyti kompiliavimo klaidą
Kai paleisite savo VBA kodą, kompiliavimo klaidos bus pateiktos VBA dialogo lange, kaip nurodyta toliau pateiktuose pavyzdžiuose.
Arba, jei jūsų projektas yra ilgas ar sudėtingas ir apima kelias įprastas procedūras, gali būti naudinga sukompiliuoti kodą prieš jį vykdant. Tai apsaugo nuo situacijų, kai pusė jūsų kodo sėkmingai veikia, tada pasirodo klaida. Galite sukompiliuoti savo VBA kodą spustelėdami meniu Derinti → Sudaryti VBA projektą.
1 pavyzdys
Kompiliavimo klaida trūkstant IF sakinio „End if“ daliai. Kiekviena atskira kodo eilutė yra teisinga, tačiau kartu jos nėra visas IF sakinys.
2 pavyzdys
Šiame pavyzdyje VBA kompiliavimo procesas aptiko sintaksės klaidą, paryškintą raudonai. VBA rodo, kad žemiau esančiame kode trūksta uždarymo funkcijos skliaustelio.
3 pavyzdys
Kompiliavimo klaidos yra įprastos, kai naudojamas „Option Explicit“, ir atsiranda, kai kintamasis nėra aiškiai apibrėžtas. Suaktyvinus „Explicit“ parinktį, norint deklaruoti visus kintamuosius, prieš juos naudojant jūsų kode, reikalingas „Dim“ sakinys.
Kaip išspręsti kompiliavimo klaidas
VBA kompiliavimo klaidos neleis veikti paveiktoms rutinoms. Kol jų neištaisysite, VBA negali tinkamai interpretuoti jūsų kodo. Klaidų pranešimų laukeliuose dažnai pateikiama daugiau naudingų patarimų nei su sintaksės klaidomis.
Jei jums iš karto neaišku, kokia problema kyla iš klaidos pranešimo, pabandykite naudoti „Microsoft“ pagalbos centrą, kad suprastumėte, kaip tiksliai turėtų būti parašytas jūsų teiginys ar funkcija. Štai klaidos pranešimo „Blokuoti, jei be pabaigos, jei“, „Microsoft“ svetainėje pavyzdys.
Kas yra vykdymo laiko klaidos?
Ištaisę sintaksės ir kompiliavimo klaidas, būsite pasirengę tinkamai išbandyti ar paleisti kodą, kad pamatytumėte, kaip gerai jis atlieka norimus veiksmus ar skaičiavimus. Testavimo laikotarpį arba tiesioginį kodo vykdymą vadiname „vykdymo laiku“.
Vykdymo laiko klaidų negalima aptikti paprasčiausiai žiūrint į kodą; jie yra jūsų kodo sąveikos su konkrečiais įvestimis ar duomenimis tuo metu rezultatas.
Klaida dažnai atsiranda dėl to, kad netikėti duomenys perduodami į VBA kodą, neatitinka duomenų tipų, padalijama iš netikėtų nulių ir nėra apibrėžtų langelių diapazonų. Klaida vykdymo metu taip pat yra pati įvairiausia ir sudėtingiausia.
Kaip nustatyti vykdymo laiko klaidas
VBA derinimas VBA: kaip derinti kodą Rašant ir vykdant VBA kodą, vartotojui svarbu išmokti derinti kodo klaidas. „Excel“ vartotojas tikisi, kad kodo funkcija problemos kodą paryškina geltonai ir suteikia mums mažą užuominą, kas sukelia problemą.
1 pavyzdys
Nors žemiau pateiktas kodas paprasčiausiai padalija vieną skaičių iš kito, yra atvejų, kai tai nebus įmanoma. Pavyzdžiui, jei langelis A1 = 2 ir langelis A2 = 0, negalima padalyti iš nulio. Vykdymo laiko klaidos laukelyje yra derinimo mygtukas, kuris pabrėžia problemos kodą.
2 pavyzdys
Šiame pavyzdyje aš sukūriau masyvą n įmonių pavadinimų surinkimui į savo darbalapį. Tada bandžiau remtis šeštuoju elementu, kuris gali egzistuoti arba neegzistuoti vykdymo metu. VBA pateikia vykdymo laiko klaidos pranešimą ir leidžia man paspausti Derinti, kad išsiaiškinčiau problemą.
Kai paspausiu Derinti, VBA pabrėžia kodo eilutę, kuri sukelia problemą. Dabar man priklauso naudoti pranešimą „Subscript out of range“, kad išsiaiškinčiau, kas negerai. Indekso už diapazono klaida paprastai reiškia, kad jūsų kodas iš esmės yra geras, bet kad negalite rasti konkretaus elemento, kurio ieškote. Dažniausiai tai atsitiks, kai nurodomos „Excel“ ląstelės ar diapazonai, taip pat jūsų VBA kodo masyvai.
Norėdami įsitikinti, kad derinimo funkcija įgalinta, meniu Parinktys> Bendrieji nustatymai> Klaidų gaudymas meniu numatytoji būsena turėtų būti „Nutraukti neapdorotas klaidas“. Palikite pažymėtą parinktį.
Kaip išspręsti vykdymo laiko klaidas
Kadangi vykdymo laiko klaidos yra įvairios ir sudėtingos, sprendimai taip pat yra įvairūs. Du bendri vykdymo laiko klaidų mažinimo metodai yra šie:
Klaida gaudant
Verta gerai pagalvoti, kokius galimus scenarijus gali ištikti jūsų kodas. Dar geriau yra išbandyti kodą pagal praktikos duomenis arba su tikraisiais vartotojais. Tai leis jums atpažinti tokius scenarijus savo VBA, koduojant šaką į skirtingus rezultatus, atsižvelgiant į tai, ar yra klaidų.
1 pavyzdys
Čia eilutė „On Error Resume Next“ priverčia kodą tęsti, net jei aptinkama klaida. Tada mes naudojame bandymą „If Err> 0“, kad sukurtume įspėjamąjį pranešimą, tik jei yra klaida. „On Error Goto 0“ atkuria VBA numatytąją būseną.
2 pavyzdys
Čia kodas apskaičiuoja pajamas per dieną, remiantis mėnesio pajamomis ir nustatytu dienų skaičiumi. Jei dienų skaičius nepateikiamas, mes pereiname prie apibrėžto kodo taško, pavadinto „NoDaysInMonthProvided:“, kur kaip pagrindinę prielaidą naudojame vidutinį mėnesio dienų skaičių. Nors tai yra supaprastinta, ji aiškiai parodo, kaip įstrigti klaidą ir pereiti į kitą kodo tašką.
Išvalyti vartotojo instrukcijas
Aiškūs dokumentai ir darbalapių etiketės užtikrins, kad jūsų vartotojai sąveikautų su jūsų modeliu taip, kaip jūs ketinote. Tai padės išvengti jų įvedant tekstą, o ne skaičius ar paliekant nulius, kurie vėliau gali paveikti jūsų kodą.
Santrauka
Yra trys pagrindiniai VBA klaidų tipai, kurie gali skirtingai paveikti jūsų kodą. Svarbu suaktyvinti VBA klaidų nustatymo parinktis, tokias kaip derintuvas ir automatinis sintaksės tikrinimas. Jie padės nustatyti klaidų vietą ir pobūdį.
Daugiau išteklių
Finansai yra oficialus pasaulinio sertifikuoto bankų ir kreditų analitiko (CBCA) ™ CBCA ™ sertifikavimo teikėjas. Atestuota bankų ir kreditų analitikų (CBCA) ™ akreditacija yra pasaulinis kredito analitikų standartas, apimantis finansus, apskaitą, kredito analizę, pinigų srautų analizę. , sandorio modeliavimas, paskolos grąžinimas ir kt. sertifikavimo programa, skirta padėti visiems tapti pasaulinio lygio finansų analitikais. Norėdami toliau siekti savo karjeros, naudingi toliau nurodyti papildomi ištekliai:
- #REF Excel klaidos #REF Excel klaidos #REF „Excel“ klaidos kelia didelių problemų skaičiuoklėse. Sužinokite, kaip rasti ir ištaisyti #REF klaidas „Excel“ šioje greitoje pamokoje su pavyzdžiais ir ekrano kopijomis. A #REF! klaida („ref“ reiškia nuorodą) yra pranešimas, kurį „Excel“ rodo, kai formulė nurodo langelį, kurio nebeegzistuoja pašalinus langelius,
- „Excel VBA“ pavyzdžiai „Excel VBA“ pavyzdžiai „Excel VBA“ leidžia vartotojui kurti makrokomandas, kurios automatizuoja „Excel“ procesus. Šiame vadove bus naudojami „Excel VBA“ pavyzdžiai, kurie parodys, kaip įrašyti makrokomandą nustatant makrokomandą, kaip deklaruoti kintamuosius ir kaip remtis duomenimis.
- Patarimai, kaip rašyti VBA programoje „Excel“ Patarimai, kaip rašyti VBA programoje „Excel“ Žemiau yra devyni patarimai, kaip rašyti VBA programoje „Excel“. „VBA for Excel“ pristato daugybę pasirinktinių skaičiavimų ir automatizavimo galimybių.
- VBA metodai VBA metodai VBA metodas yra kodo dalis, pritvirtinta prie VBA objekto, kintamojo ar duomenų nuorodos, nurodanti „Excel“, kokį veiksmą reikia atlikti to objekto atžvilgiu. Kopijavimas, įklijavimas ir pasirinkimas yra tik keli VBA metodų, kuriuos galima atlikti, pavyzdžiai.