VBA On Error Goto 0 | Kuidas Exceli VBA-s tõrke GoTo 0 abil kasutada?

Exceli VBA sisselülitamisel viga 0

VBA On Error GoTo 0 on tõrkeotsingu käsk, mida kasutatakse protseduuri käigus lubatud veatöötleja keelamiseks. Seda nimetatakse veakäsitleja blokeerijaks.

Vigade käsitlemine mis tahes programmeerimiskeeles on meistriklass, millest kõik kooderid peavad aru saama. Ka VBA programmeerimiskeel ja meil on selles programmeerimiskeeles ka veakäsitlusvõtted. „On Error Resume Next” lubab veakäitleja ja „On Error GoTo 0” keelab lubatud veakäitleja.

Nii „On Error Resume Next” kui ka „On Error GoTo 0” on paarid, mida tuleb koodi tõhususe huvides tandemina kasutada. Vigade käsitlemiseks peame alustama lausega „On Error Resume Next” ja selle tõrkeotsingu lõpetamiseks peame kasutama lauset „On Error GoTo 0”.

Nende lausete vahele kirjutatud mis tahes rea kood ignoreerib igasuguseid menetluses esinenud vigu.

Kuidas kasutada On Error GoTo 0 avalduses?

Selle VBA On Error Goto 0 Exceli malli saate alla laadida siit - VBA On Error Goto 0 Exceli mall

Näite saamiseks vaadake allolevat koodi.

Kood:

 Alam On_ErrorExample1 () töölehed ("Sheet1"). Valige vahemik ("A1"). Väärtus = 100 töölehte ("Sheet2"). Valige vahemik ("A1"). Väärtus = 100 End Sub 

Eespool nimetatud kood valib kõigepealt töölehe nimega “Sheet1” ja lahtrisse A1 lisab väärtuse 100.

Kood:

Töölehed ("Sheet1"). Valige vahemik ("A1"). Väärtus = 100

Seejärel valib tööleht nimega “Sheet2” ja sisestab sama väärtuse.

Kood:

Töölehed ("Sheet2"). Valige vahemik ("A1"). Väärtus = 100

Nüüd on mul töövihikus allpool olevad lehed.

Puuduvad lehed nimega “Sheet1” ja “Sheet2”. Koodi käivitamisel ilmneb selline viga nagu allpool.

Kuna ühtegi lehte nimega „Sheet1” pole, ilmnes viga „Alaindeks vahemikust väljas”. Selle tõrke lahendamiseks lisan makro ülaossa tõrkeotsingu avalduse „On Error Resume Next”.

Kood:

 Alam On_ErrorExample1 () On On Error Jätka järgmisi töölehti ("Sheet1"). Valige vahemik ("A1"). Väärtus = 100 töölehte ("Sheet2"). Valige Range ("A1"). Väärtus = 100 End Sub 

Nüüd käivitage kood ja vaadake, mis juhtub.

See ei anna ühtegi veateadet, kuna veakäitleja lause On Error Resume Next on lubatud.

Kujutage ette stsenaariumi, kus peame viga ignoreerima, kui tööleht “Leht1” pole saadaval, kuid peame teavitama, kui pole töölehte “Leht2”.

Kuna oleme ülaosas lisanud On Error Resume Next , on see viga hakanud käsitsema, kuid samal ajal peame määrama, mitu rida peame seda viga ignoreerima.

Selles näites peame lihtsalt ignoreerima esimese töölehe viga, kuid alates teisest lehest peame tõrke ilmnema, kui pole töölehte “Sheet2”. Nii et pärast esimese töölehe koodi lisamist tõrke keelamise rida On Error GoTo 0.

Kood:

 Sub On_ErrorExample1 () On On Error Jätka järgmisi töölehti ("Sheet1"). Valige vahemik ("A1"). Väärtus = 100 On Error tõrke korral GoTo 0 töölehed ("Sheet2"). Valige Range ("A1"). Value = 100 End Sub 

Nüüd käivitage kood rea kaupa, et näha mõju, vajutades klahvi F8.

Kui vajutate klahvi F8, siis hüpatakse koodi käivitamine järgmisele reale ja aktiivne reaülesanne täidetakse. Nüüd on aktiivne rida (kollane joon) tõrkeotsing „On Error Resume Next” ja veakäitleja lubatakse.

Nüüd ilmneb mis tahes tõrge, seda ignoreeritakse seni, kuni ta käivitab tõrkeotsingu, keelab koodi „ On Error GoTo 0 ”.

Eelmisel katsel oleme kohanud vigu, kuid vajutage veel kord klahvi F8 ja näeme võlu.

Ilma ühtegi viga esitamata on kood uuesti käivitatud, kuigi pole valida töölehte “Sheet2”. Nüüd vajutage uuesti klahvi F8.

Kuna Sheet1-d ei olnud, ei saa see lahtrisse A1 sisestada väärtust 500, kuid see, mida ta teeb, sisestab selle väärtuse 500 lahtrisse A1, olenevalt sellest, kumb tööleht on aktiivne. Minu aktiivne leht koodi täitmisel oli „Sheet3”, nii et väärtus 100 sisestatakse lahtrisse A1.

Nüüd on aktiivne koodirida “ On Error GoTo 0 ”, klahvi F8 vajutades see ridaülesanne täidetakse.

Kuna käivitatakse „On Error GoTo 0”, on see tõrkeotsingu peatanud ja hakkab uuesti ilmnema vigu. Vajutage klahvi F8 ja vaadake viga.

Eelmisel juhul ilma On Error GoTo 0-ta on see viga ka eiratud, kuid kuna oleme lisanud tõrkeotsingu blokeerija, on see viga uuesti näitama hakanud.

Siinkohal meeldejäävad asjad

  • Nii On Error Resume Next kui On Error GoTo 0-d tuleb kasutada kui " Error Handler Enabler " ja " Error Handler Disabler ".
  • Mis tahes nende kahe lause vahel olev koodirida ilmneb veaga, mida ignoreeritakse.
  • Kui on lause On GoTo 0, siis pärast alamprotseduuri väljumist keelatakse veakäitleja.

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