Kako zanemariti pogreške pomoću VBA On Error Resume Next Statement?

Excel VBA o pogrešci Nastavi dalje

VBA On Error Resume Next je izjava rukovatelja pogreškama. Ako se pogreška dogodi tijekom izvođenja koda, umjesto da se prikaže pogreška za nastavak sljedećeg retka koda ignoriranjem poruke o pogrešci, možete koristiti ovu izjavu.

Oni koji redovito pišu kodove u excelu VBA znaju da mogu dobiti pogreške čak i nakon pisanja stručnih kodova, ali tu grešku žele ignorirati i nastaviti prikazivati ​​sljedeće redove koda. Tipičan primjer dobivanja poruke o pogrešci je kada funkcija radnog lista VLOOKUP ne pronađe vrijednost pretraživanja iz polja tablice. Ne vraća se # N / A pogreška; nego će baciti pogrešku. Kao "Nije moguće dobiti svojstvo VLOOKUP klase funkcije radnog lista."

Ako ne znate zašto imamo ovu pogrešku, vrlo je teško ispraviti pogrešku. U VBA imamo značajku koja se naziva " Na sljedećem nastavku greške ".

Što U slučaju pogreške Nastavi sljedeće u VBA?

Postoje određena područja kao koder. Zasigurno ćemo znati da će ovo dati poruku o pogrešci, ali trebamo zanemariti ovu pogrešku da bismo nastavili prolaziti kroz kôd, pa kako ignorirati tu pogrešku uobičajena je sumnja svih.

Korištenjem izjave VBA On Error Resume Next možemo zanemariti pogrešku i nastaviti sa sljedećim retkom koda.

Primjer # 1

Pretpostavimo da imate mnogo radnih listova, a neke od njih skrivate kao dio VBA projekta. Na primjer, dolje su radni listovi koje imam na svom radnom listu.

Napisao sam kodove kako bih sakrio listove "Prodaja i dobit", a ispod je kod.

Kodirati:

Sub On_Error () Worksheets ("Sales"). Visible = xlVeryHidden Worksheets ("Profit 2019"). Visible = xlVeryHidden Worksheets ("Profit"). Visible = xlVeryHidden End Sub

Sada ću započeti s izvođenjem koda redak po redak pomoću tipke F8 .

Ako još jednom pritisnem tipku F8 , sakriti će list s nazivom " Prodaja ".

Sada pritisnite još jednom tipku F8 i pogledajte što će se dogoditi.

Dobili smo pogrešku "Subscript out of range" jer trenutni redak koda kaže sljedeće.

Radni listovi ("Dobit 2019"). Vidljivo = xlVeryHidden

Pokušava sakriti radni list pod nazivom " Profit 2019 ", ali ne postoji radni list s imenom "Profit 2019".

U tim slučajevima, ako radni list ne postoji u radnoj knjizi, trebamo zanemariti pogrešku i nastaviti izvršavati kôd zanemarujući pogrešku "Subscript out of range".

Sljedeći redak koda kaže

Radni listovi ("Dobit"). Vidljivo = xlVeryHidden

Ovaj radni list postoji u ovoj radnoj knjizi, tako da bez zanemarivanja pogreške ne možemo prijeći na ovaj redak koda.

Da bismo ignorirali ovu pogrešku, trebamo dodati izjavu "Pogreška nastavlja se dalje".

Kodirati:

Sub On_Error () Na grešci Nastavi sljedeće radne listove ("Prodaja"). Visible = xlVeryHidden Worksheets ("Profit 2019"). Visible = xlVeryHidden Worksheets ("Profit"). Visible = xlVeryHidden End Sub

Kao što vidite gore, dodao sam izjavu na vrh koda prije nego što započne bilo koji redak. Sada pokrenite kod i pogledajte što će se dogoditi.

Sad sam u redu u kojem je prethodno došla pogreška, pritisnite tipku F8 i pogledajte što će se dogoditi.

Skočio sam na sljedeći redak koda bez pokazivanja greške zbog izjave koju smo dodali na vrhu, a to je VBA izjava "On Error Resume Next".

Primjer # 2

Sad ćemo vidjeti kako se koristiti ovom izjavom s još jednim primjerom. Pogledajte donju strukturu podataka za ovaj primjer.

Imamo dvije tablice iznad prve tablice koje imaju Emp Name i njihove podatke o plaći u drugoj tablici, a mi imamo samo Emp Name, pa pomoću VLOOKUP-a moramo podatke o plaći dohvatiti s lijeve bočne tablice.

Ispod je kod koji sam napisao da dohvatim detalje.

Kodirati:

Sub On_Error1 () Dim k Koliko dugo traje k = 2 do 8 ćelija (k, 6) .Value = Funkcija radnog lista.VLookup (Ćelije (k, 5), Raspon ("A: B"), 2, 0) Sljedeći k Kraj Pod

Sada pokrenite kod red po redak i pogledajte što će se dogoditi.

Nakon pokretanja prvog ćelijskog koda, dobili smo rezultat za prvog zaposlenika. Ponovite isto i za drugog zaposlenika.

Ovaj smo put dobili poruku o pogrešci. Pogledajmo drugo ime zaposlenika u tablici.

Drugo ime zaposlenika je "Gayathri", ali to ime ne postoji u prvoj tablici, pa funkcija VBA VLOOKUP ne vraća pogrešku "# N / A" kada VLOOKUP ne pronađe vrijednost pretraživanja iz stol; nego daje gornju poruku o pogrešci.

Cilj nam je ako ime zaposlenika ne pronađe u tablici, tada nam treba prazna ćelija za tog zaposlenika, zanemarimo pogrešku i damo rezultate za preostala imena.

Moramo dodati izjavu “On Error Resume Next” unutar petlje.

Kodirati:

Sub On_Error1 () Dim k Koliko dugo traje k = 2 do 8 Na grešci Nastavi sljedeće ćelije (k, 6) .Value = WorksheetFunction.VLookup (Ćelije (k, 5), Raspon ("A: B"), 2, 0 ) Sljedeći k Kraj Sub

Sada pokrenite kod i pogledajte rezultat.

Dva imena zaposlenika, " Gayathri & Karanveer ", nisu na popisu, pa su ti kodovi redaka morali naići na pogrešku jer smo dodali izjavu obrađivača pogrešaka u " On Error Resume Next ", ignorirala je tu liniju koda i nastavila za sljedećeg zaposlenika.

Stvari koje treba ovdje zapamtiti

  • “On Error Resume Next” je izjava rukovatelja pogreškama kada trebamo zanemariti poznatu pogrešku.
  • Ako želite zanemariti poruku pogreške samo za određeni skup koda, zatvorite sljedeću izjavu o nastavku pogreške dodavanjem izjave " On Error GoTo 0 ".

Zanimljivi članci...