VBA Exceli vigade tüübid - loend ja näited

Kasutajad kohtavad VBA-s sageli erinevat tüüpi vigu. Allpool pakume mitmeid strateegiaid nende lahendamiseks ja lahendamiseks. Tutvume tehnikatega, mida saate testimise ajal oma koodi uurimiseks kasutada, samuti meetoditest, kuidas tõrkeid runtime ajal tuvastada.

Exceli VBA vigade tüübid

Erinevat tüüpi vigade testimine ja jälitamine VBA-koodis võib olla aeganõudev ja masendav. Pole haruldane kuulda programmeerijaid Programmeerimine Programmeerimine on arvuti täitmiseks juhiste kirjutamine. See sarnaneb inimeste retseptiga. Retsept sisaldab loetelu tegevustest, mis ütlevad, et testimisele kulub tublisti üle 30% ajast.

Aja jooksul saate vigade vältimisel paremini hakkama, kuid on ebatõenäoline, et kirjutate kunagi esmakordselt täiuslikku koodi. Õppides, kuidas VBA-vigu vältida, neid lahendada ja neile jälile saada, säästate tulevikus palju aega.

VBA vigade tüübid

Asjade lihtsustamiseks oleme kodeerimisvigade tüübid jaotanud kolme rühma. Uurime iga rühma kohta mõningaid näiteid ja arutame seejärel, kuidas võiksite neid uurida ja lahendada.

1. Süntaksivead - Kindel koodirida pole õigesti kirjutatud

2. Koosta vead - Koodiridade kokkupanemisel juhtuvad probleemid, kuigi üksikud koodiread näivad olevat mõttekad

3. Käitusaja vead - Kui kood on põhimõtteliselt õige, kuid kasutaja tehtud toiming või kasutatavad andmed põhjustavad ootamatuid vigu.

Mis on süntaksivead?

Süntaksivead on VBA viis öelda, kas teie kood on mõistlik, kõige põhilisematel tasanditel. Saame teha lihtsa võrdluse ingliskeelse lause kirjutamise reeglitega:

  • A teema on vajalik.
  • A tegusõna on vajalik.
  • A kapitali alguses on vajalik kiri.
  • Kirjavahemärgid on nõutav lõpus.
  • Objektid, omadussõnad ja muud grammatilised tunnused on valikulised.

Janeleitud 18 viga tema VBA-koodis.

Samamoodi kehtestab VBA teatud olukordades nõutava suhtes teatud reeglid. Näiteks, kui algatate oma koodis tingimusliku IF-lause, peate IF-lause esimese rea jaoks kopeerima järgmised süntaksireeglid;

  • See peab algama Kui
  • Järgmine peab olema a loogiline test , näiteks x> 10
  • Lõpuks peab see lõppema sõnaga siis

KuiArvVead> 20siis

Kui rikute ülaltoodud inglise või VBA reegleid, loetakse teie grammatikat (inglise keeles) või süntaksit (VBA) valeks.

Süntaksi tõrke tuvastamine

VBA-redaktor toob süntaksivead esile punasega, võimaldades teil neid hõlpsasti tuvastada ja lahendada. Lisaks, kui proovite oma koodi käivitada või uut rida käivitada, kuvatakse teile allpool toodud süntaksitõrketeade.

Põhiline süntaksiviga:

Põhisüntaks erro

Süntaksitõrketeate kast:

Süntaksitõrketeate ruut

Veendumaks, et kontrollid toimuksid kirjutamise ajal, lubage menüüs Valikud „Automaatne süntaksikontroll”.

Automaatne süntaksikontroll

Süntaksivigade lahendamine

Süntaksivead tähistavad vigu teie koodi konkreetse rea kirjutamisel. Enne koodi käivitamist tuleb need parandada. Kogemuste põhjal on punane tekst kõik, mida vajate vea avastamiseks. Kuid kui olete endiselt ummikus, otsige lihtsalt veebis fraasi "if lause süntaks vba" või ükskõik milline variatsioon sobib teie vajadustega ja leiate palju näiteid konkreetsest reast, mida proovite kirjutada.

Mis on kompileerimisvead?

Kompileerimisvead viitavad laiemale VBA-vigade rühmale, mis sisaldavad süntaksivigu. Kompileerimisvead tuvastavad tervikuna ka teie koodiga seotud probleemid. Iga üksiku rea süntaks võib olla õige, kuid kokku pannes pole teie koodi ridadel mõtet. Koodi kompileerimisel või käivitamisel tõstetakse esile kompileerimisvead.

Kuidas tuvastada kompileerimisviga

VBA-koodi käivitamisel kuvatakse kompileerimisvead VBA-dialoogiboksis vastavalt allpool toodud näidetele.

Teise võimalusena, kui teie projekt on pikk või keeruline ja hõlmab mitut rutiini, võib olla kasulik oma kood enne selle käivitamist kompileerida. See hoiab ära olukorrad, kus pool koodist töötab edukalt ja siis ilmub viga. Oma VBA koodi saate kompileerida, klõpsates valikut Menüü Silumine → VBA projekti kompileerimine.

Näide 1

IF-lause puuduva osa „End if” kompileerimisviga. Iga üksik rida koodis on õige, kuid koos ei tähenda see täielikku IF-lauset.

Kompileerimisviga - näide 1

Näide 2

Selles näites on VBA kompileerimisprotsess tuvastanud süntaksivea, mis on esile tõstetud punasega. VBA näitab, et allpool oleval koodil puudub funktsiooni sulg.

Kompileerimisviga - näide 2

Näide 3

Kompileerimisvead on Option Explicit kasutamisel tavalised ja ilmnevad siis, kui muutujat pole selgesõnaliselt määratletud. Kui Option Explicit on aktiveeritud, on kõigi muutujate deklareerimiseks vajalik Dim-lause, enne kui neid saab teie koodis kasutada.

Kompileerimisviga - näide 3

Kuidas kompileerimisvigu lahendada

VBA kompileerimisvead takistavad mõjutatud rutiinide käitamist. Kuni need pole parandatud, ei saa VBA teie koodi õigesti tõlgendada. Veateate kastid pakuvad sageli rohkem kasulikke nõuandeid kui süntaksivigade puhul.

Kui teile pole kohe selge, milles veateade on, proovige Microsofti abikeskuse abil saada ülevaade sellest, kuidas teie avaldus või funktsioon täpselt kirjutatakse. Siin on näide Microsofti veebisaidil kuvatavast tõrketeadest „Blokeeri, kui lõpp puudub”.

Blokeeri, kui lõputa, kui

Mis on käituse vead?

Kui olete süntaksi vead parandanud ja kompileerimisvead parandanud, võite hakata koodi õigesti testima või käivitama, et näha, kui hästi see teie soovitud toiminguid või arvutusi teostab. Nimetame testimisperioodi või reaalajas koodi käivitamist käitamiseks.

Käitusaja vigu ei saa lihtsalt koodi vaadates tuvastada; need tulenevad teie koodi suhtlusest konkreetsete sisendite või andmetega sel ajal.

Käitusaja vead on sageli põhjustatud ootamatute andmete edastamisest VBA-koodile, andmetüüpide mittevastavusest, jagamisest ootamatute nullidega ja määratletud lahtrivahemike puudumisest. Käitusaja vead on ka kõige mitmekesisemad ja keerukamad jälile saada ja neid parandada.

Käitusajavigade tuvastamine

VBA silumine VBA: kuidas siluda koodi VBA koodi kirjutamisel ja käivitamisel on kasutajal oluline õppida, kuidas koodi vigu siluda. Exceli kasutaja eeldab, et koodifunktsioon tõstab probleemkoodi esile kollasega ja annab meile väikese vihje selle kohta, mis probleemi põhjustab.

Näide 1

Kuigi allpool olev kood jagab lihtsalt ühe numbri teisega, on mõnel juhul see võimalik. Näiteks kui lahter A1 = 2 ja lahter A2 = 0, pole nulliga võimalik jagada. Käitusaja tõrkekast sisaldab silumisnuppu, mis tõstab esile probleemkoodi.

Käitusaja tõrge - näide 1

Käitusaja vead - näide 1a

Näide 2

Selles näites lõin massiivi n ettevõtte nimede kogumiseks oma töölehele. Püüdsin siis viidata kuuendale elemendile, mis võib käitamise ajal eksisteerida või mitte. VBA esitab käitamise tõrketeate ja lubab mul probleemi uurimiseks vajutada silumist.

Käitusaja tõrge - näide 2

Kui vajutan silumist, tõstab VBA esile probleemi põhjustava koodirea. Nüüd on minu ülesandeks kasutada sõnumit „Alaindeks vahemikust väljas”, et välja selgitada, mis valesti läheb. Viga alaulatusest väljaspool tähendab, et teie kood on põhimõtteliselt hea, kuid konkreetset otsitavat üksust ei leita. Kõige sagedamini juhtub see siis, kui viidatakse Exceli lahtritele või vahemikele, samuti massiividele teie VBA-koodis.

Käitusaja viga - näide 2a

Veendumaks, et silumisfunktsioon on lubatud, peaks menüüs Valikud> Üldine> Vigade püüdmine olema vaikeseisundiks „Katkesta töötlemata vead”. Jätke valik kontrollituks.

Töötlemata vigade purunemine

Käitusajavigade lahendamine

Kuna käitustõrked on oma olemuselt erinevad ja keerukad, on ka lahendused erinevad. Käitusaja vigade vähendamiseks on kaks üldist meetodit:

Viga püüdmisel

Hea mõte on mõelda, millised võimalikud stsenaariumid võivad teie koodiga kokku puutuda. Veelgi parem on oma koodi testida praktikaandmetel või tegelike kasutajatega. See võimaldab teil selliseid stsenaariume oma VBA-s ära tunda, kood hargnedes erinevateks tulemusteks, sõltuvalt vigade olemasolust.

Näide 1

Siin sunnib rida ‘On Error Resume Next’ koodi jätkama, isegi kui tuvastatakse viga. Seejärel kasutame hoiatusteate loomiseks testi If Err> 0 ainult siis, kui tõrge on olemas. „On Error Goto 0” lähtestab VBA vaikeseisundisse.

Vigade püüdmine - näide 1

Näide 2

Siin arvutatakse koodiga sissetulek päevas, mis põhineb igakuisel sissetulekul ja kindlaksmääratud päevade arvul. Kui päevade arvu ei esitata, liigume oma koodis määratletud punkti nimega “NoDaysInMonthProvided:”, kus kasutame baasoletusena kuu keskmist päevade arvu. Kuigi see on lihtsustatud, näitab see selgelt, kuidas viga kinni püüda ja oma koodis teise punkti minna.

Vigade püüdmine - näide 2

Kustutage kasutusjuhend

Selge dokumentatsioon ja töölehe sildid tagavad, et teie kasutajad suhtlevad teie mudeliga teie kavandatud viisil. See aitab neid vältida teksti sisestamisel numbrite asemel või nullide jätmisel, mis võivad hiljem teie koodi mõjutada.

Kokkuvõte

VBA-l on kolm peamist tüüpi vigu, mis võivad teie koodi erineval viisil mõjutada. Oluline on aktiveerida VBA vigade tuvastamise valikud, nagu silur ja automaatne süntaksikontroll. Need aitavad teil tuvastada vigade asukohta ja olemust.

Rohkem ressursse

Finance on ülemaailmse sertifitseeritud pangandus- ja krediidianalüütiku (CBCA) ™ CBCA ™ sertifikaadi ametlik pakkuja. Certified Banking & Credit Analyst (CBCA) ™ akrediteerimine on krediidianalüütikute globaalne standard, mis hõlmab finants-, raamatupidamis-, krediidianalüüsi-, rahavoogude analüüsi , pakti modelleerimine, laenu tagasimaksed ja palju muud. sertifitseerimisprogramm, mille eesmärk on aidata kellelgi saada maailmatasemel finantsanalüütikuks. Oma karjääri edendamiseks on kasulikud allpool olevad lisaressursid:

  • #REF Exceli vead #REF Exceli vead #REF Exceli vead põhjustavad arvutustabelites suuri probleeme. Siit leiate näidete ja ekraanipiltidega kiire juhendaja, kuidas Excelis #REF-vigu leida ja parandada. #REF! tõrge ("ref" tähistab viidet) on teade, mida Excel kuvab, kui valem viitab lahtrile, mida enam pole, mis on põhjustatud lahtrite kustutamisest
  • Exceli VBA näited Exceli VBA näited Exceli VBA võimaldab kasutajal teha makrosid, mis automatiseerivad Exceli protsessid. Selles juhendis kasutatakse Exceli VBA näiteid, kuidas makrot salvestada makro seadistamise teel, muutujate deklareerimist ja andmete viitamist.
  • Näpunäiteid VBA kirjutamiseks Excelis Näpunäiteid VBA kirjutamiseks Excelis Allpool on üheksa nõuannet VBA kirjutamiseks Excelis. VBA for Excel tutvustab lugematuid võimalusi kohandatud arvutuste ja automatiseerimise jaoks.
  • VBA-meetodid VBA-meetodid VBA-meetod on VBA-objekti, muutuja või andmeviite külge kinnitatud kooditükk, mis ütleb Excelile, milliseid toiminguid selle objekti suhtes teha. Kopeerimine, kleepimine ja valimine on vaid mõned näited VBA-meetoditest, mida saab teostada.

Lang L: none (rec-post)