VBA on virhe GoTo - VBA-virhelausekkeiden tyypit

Sisällysluettelo

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% on virheen korjaamisessa. Jokaisella koodauskielellä kooderit käyttävät omaa tapaansa käsitellä virheitä koodauksessaan, joten käytämme myös VBA-koodauksessa. Usein meidän on jätettävä virhe huomioimatta, tai usein voimme haluta 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 (tarra)
  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?

# 1 - On Error Jatka Seuraava

Kuten lausunnossa itsessään sanotaan, "On Error Resume Next" tarkoittaa aina, kun virhe esiintyy 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 minulla on seuraavat laskentataulukot työkirjassani.

  • Suoritan koodin ja näen mitä tapahtuu.
  • Saimme "Subscript Out of Range" -virheen, napsauta "Debug" nähdäksesi missä rivissä saimme virheen.
  • Joten rivillä "Taulukot (" Ws 3 ") .Valitse", saimme virheen. Tämä johtuu siitä, että työkirjassa ei ole laskentataulukkoa nimeltä "Ws 3", joten havaittiin virhe.

Tällaisissa tapauksissa saatamme haluta jättää virheen huomiotta ja jatkaa koodin suorittamista seuraavalle riville. Täältä kuvaan tulee ”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 virhesanoma on poistettu käytöstä ”On Error Resume Next” -lausekkeella.

Kun käytät "Jatka seuraavaa" -lauseketta, VBA-makrot alkavat jättää huomiotta kaikenlaiset virheet, ja ne jatkavat 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, vain meidän on jätettävä huomiotta virheet koodin muissa osissa. Emme halua sivuuttaa virhettä.

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

Joten nyt virheitä ei oteta huomioon, kunnes koodi löytää virheilmoitusten 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. Nyt tätä menetelmää käyttämällä voimme siirtyä tietylle koodiriville.

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

Katso esimerkiksi samaa koodia yllä olevasta esimerkistä.

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

Nyt makro lukee virheenkäsittelijän lauseen; paina F8-näppäintä ja suorita 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 virhekäsittelijän tunnisteeseen 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.

Mielenkiintoisia artikkeleita...