Exceli VBA tõrkekäsitlus

Veakäsitlus on väga kasulik ja oluline mehhanism selliste keelte programmeerimiseks nagu VBA. Veakontroll või tõkestamine on tõrkekäsitluse aspekt, mis tähendab tõhusate ja oluliste meetmete võtmist VBA skripti sees, et vältida tõrketeate ilmumist

Erinevat tüüpi vead VBA-s

  1. Süntaksiviga või parsimisviga
  2. Kompileerimis- või kompileerimisviga
  3. Runtime Error
  4. Loogiline viga

Ülaltoodud vigu saab parandada allolevate silumiste ja koodi vahele sisestatud erinevate tõrkeotsingute abil.

On Error Resume Next

Viga Goto 0

Veal Goto

Veal Goto -1

VBA tõrkekäsitlus erinevate 'ON ERROR' avalduste abil

Selle VBA veahalduse Exceli malli saate alla laadida siit - VBA veahalduse Exceli mall

Näide nr 1 - VBA kompileerimise vead

Kui VBA-koodi avalduses või süntaksis on tõrge, tõstetakse kood valesti sisestades koodi punase värviga esile, sõltuvalt tööriistades olevatest sätetest (kui olete valinud automaatse süntaksi kontrolli).

Vale süntaksiga koodi käivitamisel ilmub kompileerimisvea hüpikteateboks.

Kood:

 Sub SYNTAX_ERROR () MsgBox on see minu esimene programm End Sub 

„COMPILE ERROR: VARIABLE NOT DEFINED” on kõige tavalisem viga, mis ilmub hüpikteavana. kui viitemuutujat pole määratletud, ilmneb see tõrge.

Kood:

 Alam VBA_FORMAT1 () A = 19049.83 A = vorming (A, "STANDARD") MsgBox A lõpp-alam 

Ülaltoodud näites ei ole ma muutuja tüüpi Stringiks kuulutanud, seetõttu ilmneb see viga. Niisiis, ma pean muutuja kuulutama kui Dim A kui string.

Kood:

 Alam VBA_FORMAT1 () Tühjenda A kui string A = 19049.83 A = Formaat (A, "STANDARD") MsgBox A End Sub 

Näide 2 - VBA Runtime Error

Kui avalduses on võimatuid matemaatilisi väiteid või termineid, ilmneb see käitustõrge.

Kood:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Näide 3 - VBA loogilised vead või vead

Neid vigu on väga raske jälgida, neid ei tõsteta esile ega kuvata hüpikteadet. see toob kaasa ootamatuid toiminguid ja valesid tulemusi.

Näide: Kui koodis on kaks muutujat, võib see sisaldada valet. Sel juhul ilmneb loogiline tõrge.

Kuidas vältida vigu VBA-s?

Vaatame üle, kuidas VBA Excelis vältida ülaltoodud erinevat tüüpi vigu.

1. samm: VB-redaktori akna avamine Valige või klõpsake vahekaardi Arendaja rühmas Kood Visual Basic või klõpsake otsetee klahvi Alt + F11 .

2. samm: Tühja mooduli loomiseks Microsofti exceli objektide all paremklõpsake 1. lehel (VB_ERROR HANDLING) ja sisestage moodul, nii et luuakse uus tühi moodul.

VBA tõrkekäsitlus silumisvõimalusega

Parem on kood enne selle käivitamist kompileerida. Kompileerimise järgimiseks tuleb järgida alltoodud samme. VB menüü tööriistaribal valiku Silumine alt peame valima kompileeritud VBA projekti. Sellel klõpsamisel kontrollib kood samm-sammult koodi, kui ta tõrke leiab, tõstab selle esile ja ilmub hüpikteade, misjärel peate selle parandama. kui see on parandatud, peate kompileerima, et leida koodist järgmine tõrge.

Märkus. Kompileerimise valiku abil saame parandada ainult kompileerimise ja süntaksivigu.

VBA tõrkekäsitlus erinevate 'ON ERROR' avalduste abil

1. On Error Resume Next

Siin eiratakse viga ja kood liigub edasi.

Allpool mainitud näites ei saa 6 jagada nulliga, kui käivitate seda sisestuseta veateade Jätka järgmine lause sisestamisel, ilmneb allpool mainitud käitustõrge.

Kood:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Kui pärast alamväljavõtet sisestatakse koodi ülaossa On Error Resume Next, ignoreeritakse see käitusviga ja minnakse edasi järgmisele avaldusele, mille tulemuseks on väljund 6/2 st 3 (hüpikteate kast koos selle tulemusega).

Kood:

 Sub RUNTIME_2 () On Error Resume Next MsgBox 6/0 MsgBox 6/2 Sub Sub 

2. Viga GoTo 0 ja Error GoTo -1

„On Error GoTo 0” peatab koodi sellel konkreetsel real, mis tõrke põhjustab, ja kuvab tõrke kirjeldava või tähistava teadekasti.

Kood:

 Sub onError_Go_to_0 () On Error GoTo 0 Tapa "C: TempFile.exe" Range ("A1"). Value = 100 / "PETER" End Sub 

Tavaliselt näitab see vaikevigade kontrollimise käitumist, see on oluline, kui seda kasutatakse koos valikuga „On Error Resume Next”.

Tavaliselt võite jälgida kasti Runtime Error Message, see sisaldab valikuid 'Jätka', 'Lõpeta', 'Silumine' ja 'Abi' . vaatame nende kõigi kasutusviise.

  • Jätkamine eirab erandit ja jätkab koodi, kui see on võimalik.
  • Lõppvalik lõpetab programmi.
  • Silumisvõimalus tõstab esile avalduse, kus tõrge ilmnes. mis aitab teil koodi siluda või parandada.
  • Abivalik viib teid Microsofti MSDN-i abilehe avamisele.

On Error GoTo 0 koos On Error Resume Next abil

Kood:

 Sub onError_Go_to_0_with_Resume_next () Viga Jätka Järgmine tapmine "C: TempFile.exe" Viga GoTo 0 vahemik ("A1"). Väärtus = 100 / "PETER" End Sub 

Ülaltoodud koodi korral ignoreerib see vigu, kuni jõuab väljale On Error GoTo 0. Pärast On Error GoTo 0 väljavõtet läheb kood tagasi või jätkub tavapärase tõrkekontrolliga ja käivitab eeldatava tõrke. kui ma ülaltoodud koodi käivitan, näitab see jagamisviga, st tüübi mittevastavust (arvväärtust ei saa tekstiga jagada).

On Error GoTo 0 keelab kõik VBA-koodis praegu olevad tõrkeotsingud, st lülitab veakäsitsemise välja põhikoodis, samal ajal kui On Error GoTo -1 kustutab veahalduse ja seab selle väärtuseks midagi, mis aitab või võimaldab teil luua uue veapüüduri.

3. Viga GoTo <LABEL

VBA programmi juhtimise ülekandmiseks sildile järgnevale reale, kui ilmnevad käitusvead, st kood hüppab määratud sildile. Erandirea ja sildi vahelisi koodilauseid ei täideta.

See meetod on sobivam ja olulisem programmist graatsiliselt väljumiseks, kui täitmise ajal ilmneb suurem saatuslik tõrge.

Allpool mainitud VBA-koodis niipea, kui tõrge ilmneb 3. real, kannab programm juhtnööri reale 6, st sildile (hüpikteade kuvatakse kui “Exception handler” ).

Kood:

 Sub OnError_Go_to_Label () On Error GoTo Error_handler: MsgBox 9/0 MsgBox "Seda rida ei täideta" Exit Sub Error_handler: MsgBox "erandite töötleja" End Sub 

Siinkohal võite märgata, et suvandit „Exit Sub” tuleks kasutada vahetult enne silti „Error_handler:”. Seda tehakse selleks, et veakäsutaja koodiplokk peaks seisma jääma või seda ei täideta, kui viga pole. Nüüd saate oma töövihiku salvestada „Exceli makrofunktsioonidega töövihikuna”. Klõpsake töölehe vasakus nurgas nuppu Salvesta.

Kui avate faili, võite uuesti klõpsata kiirklahvil, st Fn + Alt + f8, ilmub dialoogiboks „Makro”, kus saate käivitada valitud salvestatud makrokoodi või klõpsata Fn + Alt + F11 täielik makroaken.

Asjad, mida meeles pidada

  • Enne koodi kirjutamist peate veenduma, et käsitsemata vigade katkestus on märgitud või valitud viga. lõksusuvastus tööriista VBA tööriistariba suvandite all üldiselt.
  • See on vaikeseade, mis aitab teie koodi peatada vigade eest, mida ei käsitleta.
  • Kõigi tõrgete katkemine: see peatab teie koodi igat tüüpi vigade korral.
  • Sissemurdmisklassi moodul: kui koodis kasutatakse mõnda objekti, näiteks kasutajavormi, siis tõstab see esile vea põhjustanud täpse rea.

Soovitatavad artiklid

See on VBA tõrkekäsitluse juhend. Siin arutatakse, kuidas kasutada VBA tõrkekäsitlust Excelis koos mõne praktilise näite ja allalaaditava excelimalliga. Võite vaadata ka meie teisi soovitatud artikleid -

  1. VBA deklareeritav massiiv (näited)
  2. VBA eksis
  3. VBA kaitseta leht
  4. VBA veerud | Exceli mallid
  5. VBA keskkond

Kategooria: