VBA päällä virhe Goto 0 | Kuinka käyttää virheitä GoTo 0 Excel VBA: ssa?

Excel VBA On Error Goto 0

VBA On Error GoTo 0 on virheenkäsittelijä, jota käytetään poistamaan käytössä oleva virhekäsittelijä menettelystä. Sitä kutsutaan virhekäsittelijän estoksi.

Virheenkäsittely millä tahansa ohjelmointikielellä on mestarikurssi, jonka kaikkien koodereiden on ymmärrettävä. Myös VBA-ohjelmointikieli, ja tällä ohjelmointikielellä on myös virheenkäsittelytekniikoita. ”On Error Resume Next” -toiminto sallii virhekäsittelijän ja ”On Error GoTo 0” poistaa käytöstä virhekäsittelijän.

Sekä On On Resume Next Next että On On GoTo 0 ovat pareja, joita on käytettävä yhdessä koodin tehokkuuden parantamiseksi. Virheen käsittelemiseksi meidän on aloitettava lauseesta ”On Error Resume Next” ja lopettaaksesi tämän virhekäsittelijän meidän on käytettävä lausetta ”On Error GoTo 0”.

Näiden lausekkeiden väliin kirjoitettu viivakoodi jättää huomiotta kaikenlaisen menettelyssä tapahtuneen virheen.

Kuinka käyttää On GoTo 0 -lauseketta?

Voit ladata tämän VBA On Error Goto 0 Excel -mallin täältä - VBA On Error Goto 0 Excel -malli

Katso esimerkki alla olevasta koodista.

Koodi:

 Sub On_ErrorExample1 () laskentataulukot ("Sheet1"). Valitse alue ("A1"). Arvo = 100 laskentataulukkoa ("Sheet2"). Valitse alue ("A1"). Arvo = 100 End Sub 

Yllä oleva koodi tekee sen, että se valitsee ensin taulukon nimeltä "Arkki1" ja soluun A1 lisää arvon 100.

Koodi:

Laskentataulukot ("Sheet1"). Valitse Range ("A1"). Arvo = 100

Sitten se valitsee laskentataulukon nimeltä "Arkki2" ja lisää saman arvon.

Koodi:

Laskentataulukot ("Sheet2"). Valitse Range ("A1"). Arvo = 100

Nyt työkirjassani on alla olevat taulukot.

Ei ole taulukoita nimeltä "Sheet1" ja "Sheet2", kun suoritamme koodin, se havaitsee alla olevan kaltaisen virheen.

Koska taulukkoa, jonka nimi on "Arkki1", ei ole, se on havainnut virheellisen "alaindeksi alueen ulkopuolella" -virheen. Tämän virheen käsittelemiseksi lisätään virheenkäsittelijän lause “On Error Resume Next” makron yläosaan.

Koodi:

 Sub On_ErrorExample1 () On Error Jatka seuraavia laskentataulukoita ("Sheet1"). Valitse alue ("A1"). Arvo = 100 laskentataulukkoa ("Sheet2"). Valitse alue ("A1"). Arvo = 100 End Sub 

Suorita nyt koodi ja katso mitä tapahtuu.

Se ei anna virheilmoituksia, koska virheenkäsittelijän ilmoitus Virheen jatkaminen seuraavaksi on käytössä.

Kuvittele skenaario, jossa meidän on jätettävä virhe huomioimatta, jos laskentataulukko "Sheet1" ei ole käytettävissä, mutta meidän on ilmoitettava, jos taulukkoa "Sheet2" ei ole.

Koska olemme lisänneet On Error Resume Next -sivun yläosaan, se on alkanut käsitellä virhettä, mutta samalla meidän on määritettävä, kuinka monelle riville meidän on jätettävä huomioimatta tämä virhe.

Tässä esimerkissä meidän on vain jätettävä huomioimatta ensimmäisen laskentataulukon virhe, mutta toisesta taulukosta eteenpäin meidän on tapahduttava virhe, jos taulukkoa "Sheet2" ei ole. Joten ensimmäisen laskentataulukon koodin jälkeen virhe poistetaan käytöstä rivi On Error GoTo 0.

Koodi:

 Sub On_ErrorExample1 () On Error Jatka seuraavia laskentataulukoita ("Sheet1"). Valitse alue ("A1"). Arvo = 100 On Error GoTo 0 -taulukossa ("Sheet2"). Valitse Range ("A1"). Arvo = 100 End Sub 

Suorita nyt koodi rivi riviltä nähdäksesi vaikutus painamalla F8-näppäintä.

Nyt kun painat F8-näppäintä, kun koodin suoritus siirtyy seuraavalle riville ja aktiivinen rivin tehtävä suoritetaan. Nyt aktiivinen rivi (keltaisen värinen viiva) on ”On Error Resume Next” -virheenkäsittelijä ja virhekäsittelijä otetaan käyttöön.

Nyt mitä tahansa virhettä esiintyy, se ohitetaan, kunnes se suorittaa virheenkäsittelijän, poistaa koodin ” On Error GoTo 0 ” -koodista.

Edellisessä yrityksessä olemme havainneet virheitä, mutta paina F8-näppäintä vielä kerran ja näet taika.

Ilman minkäänlaista virhettä se on aloittanut koodin suorittamisen, vaikka taulukkoa "Sheet2" ei olisikaan valittavissa. Paina nyt F8 uudelleen.

Koska Sheet1: tä ei ollut, se ei voi lisätä arvoa A1-soluun arvona 500, mutta mitä se tekee, se lisää arvon 500 soluun A1 sen mukaan, kumpi laskentataulukko on aktiivinen. Aktiivinen arkkini koodia suoritettaessa oli ”Sheet3”, joten arvo 100 lisätään soluun A1.

Nyt aktiivinen koodirivi on ” On Error GoTo 0 ”, painamalla F8-näppäintä tämä rivitehtävä suoritetaan.

Koska ”On Error GoTo 0” suoritetaan, se on lopettanut virheenkäsittelyn ja alkaa jälleen näyttää virheitä, jos niitä esiintyy. Paina F8-näppäintä ja katso virhe.

Edellisessä tapauksessa ilman On Error GoTo 0 -ohjelmaa se on ohittanut myös tämän virheen, mutta koska olemme lisänneet virheenkäsittelijän estimen, se on alkanut näyttää virheen uudelleen.

Muistettavaa täällä

  • Sekä On Error Resume Next että On Error GoTo 0 on käytettävä ” Virheenkäsittelijän käyttöönottajana ” ja “ Virheenkäsittelyn estolaitteena ”.
  • Mikä tahansa näiden kahden lauseen välinen koodirivi havaitsee virheen, joka ohitetaan.
  • Jos On Virhe GoTo 0 -lauseke, alimenettelystä poistumisen jälkeen virhekäsittelijä poistetaan käytöstä.

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