VBA veateate kohta 3 parimat viisi vigade käsitlemiseks

Exceli VBA veateate kohta

VBA On Error lause on teatud tüüpi veakäsitlusmehhanism, mida kasutatakse koodi suunamiseks tegema, mis siis, kui ilmneb mis tahes tüüpi viga, tavaliselt siis, kui kood tabab tõrke, mille käivitamine peatub, kuid selle väitega koodis käivitatakse kood kood jätkub, nagu tal on juhiste kogum, mida ta peab tegema vea korral.

Koodis oleva vea ennetamine muudab teid VBA kodeerimisel profiks. Te ei saa koodi 100% tõhusaks muuta, isegi kui olete oma koodi suhtes ühel või teisel viisil kindel, võib see vea tekitada.

Igasuguste vigade tuvastamine ja käsitlemine on peaaegu võimatu ülesanne, kuid meil on VBA-s vea käsitlemiseks erinevaid viise. Koodi kirjutamise ajal ei pruugi te arvata, et selline veakood võib välja visata, kuid kui mõni viga tuleb, kulutate silumisele rohkem aega kui koodi enda kirjutamisele.

Mis on viga?

Viga pole midagi muud kui koodirida ei saa funktsionaalsuse või vale koodi tõttu käivitada. Nii et proovige viga ennetada ja sellega toime tulla.

Näiteks kui proovite kustutada lehte, mida seal pole, siis ilmselgelt ei saa me seda koodirida käivitada.

Viga on kolme tüüpi, üks on kompileeritud viga deklareerimata muutujate tõttu. Teine neist on andmesisestusviga, mis tuleneb kooderi valedest sisestustest, ja kolmas on VBA-st tingitud käitamisviga, mis ei suuda koodirida ära tunda. Töölehele või töövihikule juurdepääsu proovimiseks või selle töötamiseks, mida seal pole.

Kuid meil on VBA-s avaldus, mis käsitleb kõiki selliseid vigu, st "On Error" avaldus.

Veateate olekute tüübid

VBA vigade käsitlemise põhipunkt on lause „On Error”. Näiteks tõrke korral "jätkake järgmist rida", "minge teisele reale või hüpake teisele reale" jne.

Avaldusel On Error on kolme tüüpi avaldusi.

  1. GoTo 0  tähendab alati, kui käitamisaja tõrge ilmneb, või VBA peaks kuvama tõrketeate kasti, milles öeldakse, millist viga ta on kohanud. Niipea kui VBA koodi käivitab, keelab see koodi kõik selles konkreetses plokis olevad veakäitlejad.
  2. Jätka järgmine tähendab, et alati, kui tõrge ilmneb, käsib see lause Excelil seda viga ignoreerida ja liikuda (jätkata järgmisele) järgmisele koodireale, kuvamata ühtegi veateadet. See ei tähenda, et see vea parandaks, pigem ignoreerib viga.
  3. GoTo [silt] tähendab alati, kui VBA kohtab viga, minge määratud sildile. See paneb koodi hüppama kooderi antud konkreetsele reale.

3 parimat viisi vigade käsitlemiseks VBA-s

Selle VBA On Error Templati saate alla laadida siit - VBA On Error Template

# 1 - sisse lülitatud viga Jätka järgmist

Oletame, et jagate väärtuse 20 0-ga ja olete muutuja deklareerinud jagamise tulemuse määramiseks.

Kood:

 Sub OnError_Example1 () Dim i täisarvuna i = 20/0 End Sub 

Selle koodi käivitamisel viskab see vea alla.

Nii et te ei saa ühtegi numbrit jagada nullväärtusega. Käitusaja vea number on 11, st jagamine nulliga.

Nüüd lisan koodile veel ühe rea.

Kood:

 Sub OnError_Eexample1 () Dim i täisarvuna, j täisarvuna i = 20/0 j = 20/2 End Sub 

Nüüd lisan ülaosas järgmise väljavõtte Vea jätkamine kohta.

Kood:

 Sub OnError_Example1 () Dim i täisarvuna, j täisarvuna On viga jätkata Järgmine i = 20/0 j = 20/2 End Sub 

Kui ma selle koodi käivitan, ei anna see mulle veateateid, vaid täidab järgmise koodirea, st j = 20/2.

# 2 - GoTo sildi viga

Olen deklareerinud kolm muutujat.

Kood:

 Sub OnError_Eexample1 () Dim i täisarvuna, j täisarvuna, k täisarvuna 

Kõigi nende kolme muutuja jaoks määran jaotuse arvutamise.

Kood:

 Alamviga_näide1 () Hämardage i täisarvuna, j täisarvuna, k täisarvuna i = 20/0 j = 20/2 k = 10/5

Kõigi nende kolme arvutuse tulemus kuvatakse sõnumikastis.

Kood:

 Alamviga_näide1 () Dim i täisarvuna, j täisarvuna, k täisarvuna i = 20/0 j = 20/2 k = 10/5 MsgBox "i väärtus on" & i & vbNewLine & "j väärtus on "& j & _ vbNewLine &" k väärtus on "& k & vbNewLine End Sub 

Nüüd proovin seda koodi käivitada, kuna “I” arvutamine pole õige, saame jooksuaja vea 11.

Nüüd lisan lause „On Error Resume Next”.

Kood:

 Sub OnError_Example1 () Dim i täisarvuna, j täisarvuna, k täisarvuna vea jätkuna Järgmine i = 20/0 j = 20/2 k = 10/5 MsgBox "i väärtus on" & i & vbNewLine & "The j väärtus on "& j & _ vbNewLine &" k väärtus on "& k & vbNewLine End Sub 

Kui ma selle täidan, jätab see “I” arvutuse vahele ja täidab ülejäänud kaks arvutust ning tulemus on järgmine.

Nüüd lisan "On Error Resume Next" asemel "On Error GoTo KCalculation"

Kood:

 Sub OnError_Example1 () Dim i täisarvuna, j täisarvuna, k täisarvuna Veana GoTo KKalkulatsioon: i = 20/0 j = 20/2 KKalkulatsioon: k = 10/5 MsgBox "i väärtus on" & "J väärtus on" & j & _ vbNewLine & "k väärtus on" & k & vbNewLine End Sub 

Märkus: Siin on “KCalculation” minu antud sildi nimi, saate oma sildi nime anda ilma tühikuta.

Kui ma selle koodirea käivitan, siis see ei hüppa järgmisele reale, vaid hüppab minu sisestatud sildi nimele, st “KCalcualtion”. Siin ignoreeritakse „I” poolt antud viga ja samuti ei teostata „j” arvutust, vaid hüpatakse kohe „KCalcualtion” -i.

# 3 - VBA printimisvea number

Koodi lõppu saame vea numbri printida ka eraldi teatekasti. Järgmine koodirida teeb selle töö.

Kood:

Viga. Number

Nüüd käivitan selle koodi, esimene kast näitab arvutustulemusi.

Klõpsake nuppu OK, veateate kuvamiseks kuvatakse veel üks sõnumikast.

Me läheme tulemuseks 11 ehk jagamine nulliga.

Numbri asemel võime saada ka vea kirjelduse. Peame lihtsalt koodi muutma, allpool on kood.

Kood:

Viga. Kirjeldus

See näitab sellist kirjeldust.

Asjad, mida meeles pidada

  • Pärast koodi lõppu „On Error Resume Next” sisestamist ärge unustage lisada lauset „On Error GoTo 0”
  • Sildi nimi peaks olema mõlemas kohas sama.
  • Siltide nimesid pole vaja aegsasti määratleda.
  • Lõpuks vaadake alati, mis viga ilmnes, läbi eraldi sõnumikasti.

$config[zx-auto] not found$config[zx-overlay] not found