VBA tõrkeotsing - Juhend vigade käsitsemiseks Exceli VBA-s

Lang L: none (table-of-contents)

Exceli VBA tõrkeotsing

VBA-s, kui töötame koodidega, võib ilmneda palju erinevaid veatüüpe ja nende tõrkeotsingut nimetatakse veakäsitluseks, nüüd võib süntaksis esineda mõningaid vigu, mis Excel ise selle esile tõstab, kuid kui on mõni viga mis jääb vahemikust välja või miski, mida pole olemas, pakub exceli samale hüpikaknale, koodis oleva vea tuvastamiseks on oluline teada, milline veakood millise vea jaoks on.

Exceli VBA-s saame suvalise koodikomplekti käivitamisel mingisuguseid vigu. Mõned neist vigadest on süntaksivead; mõned on vead, mida pole võimalik käivitada. Süntaksiviga on siis, kui kasutaja on selle teinud, on Excel ise punase värviga esile tõstetud. Aga kui on mingisugust muud tüüpi tööaja viga, siis kuidas me sellega hakkama saame ja kuidas sellest kaugemale jõuame, käsitleme selles artiklis.

Peale süntaksivigade tuleb muid käitamisvigu käsitleda mis tahes koodide komplekti käivitamisel. Esiteks lubage mul tuua näide selle kohta, kuidas teine ​​käitustõrge ilmneb. Vaadake allolevat koodi,

See on näidiskood, kui see täidetakse, tagastab funktsiooni msgbox kirjutatu. Kuid nagu näeme, et koodi teisel real on 4/0, mis pole matemaatilises mõttes võimalik, tagastab see tööaja vea. Käivitame ülaltoodud koodi ja näeme viga, mille saame.

Selle vea saame antud koodi käivitamisel. Nüüd, kuidas seda viga lahendada, teeb tõrkeotsing.

Vigade käsitlemiseks on kaks meetodit:

  1. On Error Goto ja
  2. On Error Jätka järgmist.

Selgitus

Nagu eespool selgitatud, saame VBA-s mitut tüüpi vigu. Mõni on süntaks ja mõni on tööaeg. Süntaksivead on juba punase värviga esile tõstetud, näiteks vaadake ekraanipilti,

Kuigi teine ​​on tööaja vead. Põhimõtteliselt teeb Excel järgmised kolm asja, kas näitab viga või ignoreerib seda viga või kuvab teatud komplekti juhiseid. Selliste ülesannete täitmiseks peame andma juhised ja seda nimetatakse veakäsitluseks.

Kuidas VBA koodis esinevaid vigu käsitleda?

Näide 1

Esimese näite jaoks võtkem esimene demonstratsiooniks võetud kood. Ülaltoodud näites oleme näinud, et kood annab msgboxi teise funktsiooni korral ajavea.

Pärast alafunktsiooni avamist kirjutage järgmine kood,

Kood:

Alamproov () vea korral Jätka järgmist MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub

Nüüd, kui täidame ülaltoodud koodi, näeme, et veaga koodirida ei käivitata. Excel jätab selle rea vahele ja jätkab järgmisel real.

Vea käsitlemiseks on veel üks meetod - VBA Goto avaldus. Pakume Exceli kui sihtkohta, kuhu minna vea leidmisel. Eelmise tõrkeotsingu koodi asemel sisestasime järgmise koodi,

Kood:

Alamproov () Vea korral GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub

Anname Exceli Azsi sihtkohaks, kuhu minna, kui see leiab vea. Pärast msgboxi kirjutage järgmine kood nagu allpool,

Kood:

Alamproov () Vea korral GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Valmis: Exit Sub

Nüüd peame määratlema sihtkoha az, mida ta peaks tegema, kui excel leiab koodist vea.

Kood:

Alamproov () Vea korral GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Valmis: Exit Sub az: MsgBox "See on viga" & Viga.Kirjeldus Lõpp alam

Nüüd, kui seda koodi käivitame, näeme tulemust.

See on esimene msg-kasti tulemus ja kuna me teame, et meie koodi järgmisel real on viga, vaatame tulemust, mida excel annab.

Koodis olev err.description aitab meil täpselt näidata, mis viga meie koodis ilmnes.

Näide 2

Oleme õppinud, kuidas oma koodides vigu käsitleda. Vaatame veel ühte näidet vigade käsitlemiseks. Vaadake järgmist koodi meie teise näitena.

Meil on mõnevõrra sarnane viga näites 1. Viga on real d = i / b. Nüüd käsitleme neid tõrkeid, kasutades kahte ülalkirjeldatud meetodit.

Pärast alafunktsiooni avamist kirjutage järgmine kood,

Kood:

Alamvalim2 () Vea korral jätkub järgmine bx Dim i täisarvuna, b täisarvuna, c täisarvuna, d täisarvuna i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d End Sub

Now when we execute our code, we can see that it ignores the second line and just displays the value for C.

The above error handler was a resume next, and now we will use the Go to wherein we will tell we excel a destination to go when it encounters an error. Write down the following code,

Code:

Sub Sample2() On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d

The bx is a destination given when it encounters an error after msgbox D write down the following code,

Code:

Sub Sample2() On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d DOne: Exit Sub

Now we need to define the destination Bx what it should do when it encounters an error, So write down the following code,

Code:

Alamproov2 () Vea korral GoTo bx Dim i täisarvuna, b täisarvuna, c täisarvuna, d täisarvuna i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne: Exit Sub bx: MsgBox "See on veel üks viga" ja vea kirjelduse lõigu alam

Nüüd koodi täitmisel näeme, et Excel annab meile kõigepealt C väärtuse.

Nüüd teises etapis annab see meile viivituse, mille andsime talle vea ilmnemisel.

Nii käsitleme Exceli VBA tavapäraseid käitamisvigu.

Asjad, mida meeles pidada

Veakäsitluse puhul peame meeles pidama mõnda järgmist:

  1. On Error Resume Next ignoreerib viga.
  2. Sees vea korral tõendab GoTo Gives vea ilmnemisel suurepärase sihtkoha.
  3. Kirjeldust kasutatakse kasutajale ilmnenud täpse vea kuvamiseks.

Huvitavad Artiklid...