VBA on virhe GoTo | VBA-virhelausekkeiden tyypit

Excel VBA On GoTo -virhe

Virheet ovat olennainen osa koodauskieliä, ja VBA-makrot eivät eroa tästä. Mielestäni virheen syyn selvittäminen on 90% tehdystä työstä ja 10% virheen korjaamisesta. Jokaisessa koodauskielessä kooderit käyttävät omaa tapaansa käsitellä virheitä koodauksessaan, joten käytämme myös VBA-koodauksessa. Usein joudumme jättämään virheen huomiotta tai usein haluamme mennä tiettyihin asioihin virheen tapahtuessa. ”On Error” on lause, jota meidän on käytettävä VBA: ssa virheiden käsittelemiseksi.

Tässä lausunnossa on kolmenlaisia ​​lauseita, ja alla on luettelo.

  1. On Error Goto 0
  2. On Error Goto [tunniste]
  3. On Virhe Jatka Seuraava

Tässä artikkelissa näemme, kuinka näitä kolmea lausetta käytetään VBA-koodauksessa kaikenlaisten virheiden käsittelemiseksi.

Kuinka käyttää VBA-virhelausekkeita?

Voit ladata tämän VBA On Error GoTo -lausekemallin täältä - VBA On Error GoTo -lausekemalli

# 1 - On Error Jatka Seuraava

Koska lauseessa itsessään sanotaan "On Error Resume Next" tarkoittaa aina, kun virhe tapahtuu koodissa, "jatka" koodin seuraavaa riviä jättämällä virherivikoodi huomiotta. Katsokaa nyt alla olevaa koodia.

Alla olevassa koodissa olen maininnut laskentataulukon nimet ja pyytänyt syöttämään arvon ensimmäiseen soluun virhetestauksena.

Koodi:

 Sub On_Error_Resume_Next () laskentataulukot ("Ws 1"). Valitse alue ("A1"). Arvo = "Virhe testattaessa" laskentataulukoita ("Ws 2"). Valitse alue ("A1"). Arvo = "Virhe testattaessa" laskentataulukoita ( "Ws 3"). Valitse alue ("A1"). Arvo = "Virhetestaus" -arkin laskentataulukot ("Ws 4"). Valitse alue ("A1"). Arvo = "Virheen testaus" loppuosa 

Nyt työkirjassani on alla olevat laskentataulukot.

  • Suoritan koodin ja näen mitä tapahtuu.

  • Saimme "Subscript Out of Range" -virheen, napsauta "Debug" nähdäksesi missä rivissä saimme virheen.

  • Joten rivillä "Laskentataulukot (" Ws 3 "). Valitse" saimme virheen, tämä johtuu siitä, että työkirjassa ei ole laskentataulukkoa nimeltä "Ws 3", joten havaitsimme virheen.

Tällaisissa tapauksissa saatamme haluta jättää virheen huomiotta ja palata koodin suorittamiseen seuraavalle riville, tässä tulee kuvaan ”On Error Resume Next” -virheenkäsittelijä.

  • Ainoa mitä meidän on tehtävä, on lisätä rivi ”On Error Resume Next” makron alkuun.

Suorita nyt tämä koodi, eikä se näytä virheilmoitusta, koska aina kun koodi havaitsee virheen, se jättää virheen huomiotta ja palaa seuraavaan koodiriviin.

# 2 - On GoTo 0 -virhe

Tämä ei ole virheenkäsittelijä, vaan virheviestien sallija sen jälkeen, kun olemme poistaneet virhesanoman käytöstä ”On Error Resume Next” -lausekkeella.

Yksi, jota käytät "Jatka seuraavaa" -lauseketta, VBA-makrot alkavat jättää huomiotta kaikenlaiset virheet ja jatkuu seuraavalla koodirivillä. Mutta emme halua tämän tapahtuvan koko ajan, koska joitain virheitä meidän on jätettävä tahallisesti huomiotta, toiset tarvitsemme ilmoituksen.

Jos jokin erityinen koodijoukko heittää virheen kyseiseen koodilohkoon, meidän on jätettävä huomioimatta virheet koodin muut osat, emme halua jättää huomiotta virhettä.

  • Katso alla olevasta kuvasta ”On Error GoTo 0” -lausekkeen käyttö.

Joten nyt virheitä ei oteta huomioon, kunnes koodi löytää virheilmoituksen sallijan ”On Error GoTo 0”. Kun tämä koodirivi suorittaa makrot takaisin normaaliksi ja alkaa heittää virheilmoituksia tavalliseen tapaan.

# 3 - GoTo Label -virhe

Olemme nähneet, miten sivuuttaa virhe ja kuinka ottaa virheilmoitus takaisin käyttöön. Tämän menetelmän avulla voimme nyt siirtyä tietylle koodiriville.

Tässä menetelmässä "Label" tarkoittaa, että voimme antaa tälle tarralle minkä tahansa nimen, ja sama tarra tulisi antaa myös vaaditulle koodiriville.

Katso esimerkiksi samaa koodia yllä olevasta esimerkistä.

Suoritetaan nyt koodirivi riviltä painamalla F8-toimintonäppäintä.

Nyt makro lukee virheenkäsittelijän lausunnon, paina F8-näppäintä suorittaaksesi kaksi ensimmäistä laskentataulukon koodia.

Nyt makro on suorittamassa kolmannen laskentataulukon koodin, jota ei ole työkirjassa, paina F8-näppäintä ja katso mitä tapahtuu.

Koska makro havaitsi virheen alla olevalla koodirivillä, se on siirtynyt virheenkäsittelijän tunnisteelle ”ErrorMessage”, joka kuvattiin ”On Error GoTo [Label]” -lausekkeessa.

Nyt viestiruudussa näkyy viesti "Tapahtui virhe ja makrosta poistuminen".

Muistettavaa

  • VBA On Error GoTo 0 ottaa virheilmoituksen uudelleen käyttöön, joten älä unohda lisätä sitä virheenkäsittelijän toimittamisen jälkeen.
  • Sinun on oltava täysin varma siitä, missä koodin osassa haluat ohittaa virheen, joten liitä virhekäsittelijä vain kyseiseen koodilohkoon.