Kuinka jättää virheet huomiotta VBA: lla On Error Resume Next Statement?

Excel VBA On Error Jatka seuraavaa

VBA On Error Resume Next on virheenkäsittelijä. Jos virhe ilmenee koodia suoritettaessa virheen näyttämisen sijaan, jatka seuraavaa koodiriviä ohittamalla virheilmoitus, voit käyttää tätä lausetta.

Ne, jotka kirjoittavat koodeja säännöllisesti excel VBA: ssa, tietävät, että he voivat saada virheitä jopa kirjoittamalla taitavia koodeja, mutta he haluavat jättää tämän virheen huomiotta ja jatkaa juoksua seuraavilla koodiriveillä. Yksi tyypillinen esimerkki virheilmoituksen saamisesta on, kun VLOOKUP-laskentataulukko-toiminto ei löydä hakuarvoa taulukon taulukosta. Se ei palauta # N / A-virhettä; pikemminkin se heittää virheen. Kuten "Taulukon funktioluokan VLOOKUP-ominaisuutta ei saada."

Jos et tiedä miksi saamme tämän virheen, virheen korjaaminen on erittäin vaikeaa. VBA: ssa meillä on ominaisuus nimeltä On On Resume Next .

Mitä virheen jatkamisen seuraavaksi tekeminen tapahtuu VBA: ssa?

Kooderina on tiettyjä alueita. Tiedämme varmasti, että tämä antaa virhesanoman, mutta meidän on jätettävä tämä virhe huomiotta, jotta voimme jatkaa koodin läpi, joten kaikkien virheiden ohittaminen on yleinen epäily.

Käyttämällä VBA On Error Resume Next -lauseketta voimme jättää virheen huomiotta ja jatkaa seuraavaa koodiriviä.

Esimerkki 1

Oletetaan, että sinulla on monia laskentataulukoita, ja piilotat osan niistä VBA-projektissa. Esimerkiksi alla on laskentataulukossa olevat laskentataulukot.

Olen kirjoittanut koodit piilottaaksesi Myynti- ja Voitto-taulukot, ja koodi on alla.

Koodi:

Sub On_Error () laskentataulukot ("myynti"). Visible = xlVeryHidden laskentataulukot ("voitto 2019"). Visible = xlVeryHidden laskentataulukot ("voitto"). Visible = xlVeryHidden End Sub

Nyt aloitan koodirivien käyttämisen riveittäin käyttämällä F8- näppäintä.

Jos painan F8- näppäintä vielä kerran, se piilottaa arkin nimeltä Myynti .

Paina nyt F8-näppäintä vielä kerran ja katso mitä tapahtuu.

Meillä on virhe ”Subscript out of range” -virhe, koska nykyinen koodirivi kertoo alla olevan.

Taulukot ("Voitto 2019"). Näkyvä = xlVeryHidden

Se yrittää piilottaa laskentataulukon nimeltä " Voitto 2019 ", mutta ei ole laskentataulukkoa "Voitto 2019".

Näissä tapauksissa, jos laskentataulukkoa ei ole työkirjassa, meidän on jätettävä huomioimatta virhe ja jatkettava koodin suorittamista jättämällä huomiotta Alaindeksi alueen ulkopuolella -virhe.

Koodin seuraava rivi sanoo

Taulukot ("Voitto"). Visible = xlVeryHidden

Tämä laskentataulukko on olemassa tässä työkirjassa, joten emme voi siirtyä tälle koodiriville jättämättä huomiotta virhettä.

Tämän virheen ohittamiseksi meidän on lisättävä ”On Error Resume Next” -lauseke.

Koodi:

Sub On_Error () On Virhe Jatka seuraavia laskentataulukoita ("Myynti"). Visible = xlVeryHidden laskentataulukot ("Voitto 2019"). Visible = xlVeryHidden laskentataulukot ("Voitto"). Visible = xlVeryHidden End Sub

Kuten yllä voit nähdä, olen lisännyt lauseen koodin yläosaan ennen minkään rivin alkamista. Suorita nyt koodi ja katso mitä tapahtuu.

Nyt olen rivillä, jolle virhe annettiin aiemmin, paina F8-näppäintä ja katso mitä tapahtuu.

Olen siirtynyt seuraavalle koodiriville osoittamatta mitään virhettä johtuen ylhäältä lisäämästämme lauseesta, joka on “On Error Resume Next” VBA-lause.

Esimerkki 2

Nyt näemme, kuinka tätä lausetta käytetään vielä yhdellä esimerkillä. Katso tämän esimerkin alla oleva tietorakenne.

Ensimmäisen taulukon yläpuolella on kaksi taulukkoa, joiden toisessa taulukossa on Emp-nimi ja heidän palkkatiedot, ja meillä on vain Emp-nimi, joten VLOOKUP-sovelluksen avulla meidän on haettava palkkatiedot vasemmanpuoleisesta taulukosta.

Alla on koodi, jonka kirjoitin yksityiskohtien hakemiseksi.

Koodi:

Sub On_Virhe1 () Hämärä k niin kauan kuin k = 2 - 8 solua (k, 6). Arvo = WorksheetFunction.VLookup (solut (k, 5), alue ("A: B"), 2, 0) Seuraava k loppu Sub

Suorita nyt koodi rivi riviltä ja katso mitä tapahtuu.

Ensimmäisen solukoodin suorittamisen jälkeen olemme saaneet tuloksen ensimmäisestä työntekijästä. Toista sama myös toiselle työntekijälle.

Tällä kertaa meillä on virheilmoitus. Katsotaanpa taulukon toista työntekijän nimeä.

The second employee name is “Gayathri,” but this name doesn’t not exists in the first table, so the VBA VLOOKUP function doesn’t return “#N/A” error when the VLOOKUP doesn’t find the lookup value from the table; rather, it gives the above error message.

Our aim is if the employee name doesn’t find in the table, then we need an empty cell for that employee and ignore the error and give results for the remaining names.

We need to add the “On Error Resume Next” statement inside the loop.

Code:

Sub On_Error1() Dim k As Long For k = 2 To 8 On Error Resume Next Cells(k, 6).Value = WorksheetFunction.VLookup(Cells(k, 5), Range("A:B"), 2, 0) Next k End Sub

Now run the code and see the result.

Kaksi henkilöstön nimet, ” Gayathri & Karanveer, ” eivät ole siellä listalla, joten ne, johtokoodit varmaan tapahtunut virhe, koska olemme lisänneet virheenkäsittelijä ilmoitus ” Error Resume Next ” on jätetty huomiotta Koodirivin ja sitä jatkettiin seuraavalle työntekijälle.

Muistettavaa täällä

  • "On Error Resume Next" on virheenkäsittelijä, kun meidän on jätettävä huomioimatta tunnettu virhe.
  • Jos haluat jättää huomiotta vain tietyn koodisarjan virhesanoman, sulje seuraava virheen jatka seuraava lauseke lisäämällä ” On Error GoTo 0 ” -lauseke.

Mielenkiintoisia artikkeleita...