Hvordan ignorere feil ved bruk av VBA On Error Resume Next Statement?

Excel VBA ved feil Gjenoppta neste

VBA On Error Resume Next er en uttalelse om feilbehandler. Hvis feilen oppstår mens du kjører koden i stedet for å vise feil for å gjenoppta neste kodelinje ved å ignorere feilmeldingen, kan du bruke denne setningen.

De som skriver koder regelmessig i Excel VBA, vet at de kan få feil selv etter å ha skrevet dyktige koder, men de vil ignorere den feilen og fortsette å kjøre med de neste kodelinjene. Et typisk eksempel på å få en feilmelding er når VLOOKUP-regnearkfunksjonen ikke finner oppslagsverdien fra tabellmatrisen. Det vil ikke returnere # N / A feil; heller, det vil kaste feilen. Som "Kan ikke få VLOOKUP-egenskapen til regnearkfunksjonsklassen."

Hvis du ikke vet hvorfor vi får denne feilen, er det veldig vanskelig å fikse feilen. I VBA har vi en funksjon som heter " On Error Resume Next ."

Hva gjør neste feil ved VBA?

Det er visse områder som koder. Vi vet sikkert at dette vil gi en feilmelding, men vi må ignorere denne feilen for å fortsette gjennom koden, så hvordan man kan ignorere den feilen er vanlig tvil om alle har.

Ved å bruke VBA On Error Resume Next-setningen, kan vi ignorere feilen og gjenoppta neste kodelinje.

Eksempel 1

Anta at du har mange regneark, og at du skjuler noen av dem som en del av VBA-prosjektet. Nedenfor er regnearkene jeg har i regnearket.

Jeg har skrevet koder for å skjule "Salgs- og" Profitt-ark, og nedenfor er koden.

Kode:

Sub On_Error () regneark ("Salg"). Synlig = xlVeryHidden regneark ("Profit 2019"). Synlig = xlVeryHidden regneark ("Profitt"). Synlig = xlVeryHidden End Sub

Nå vil jeg begynne å kjøre koden linje for linje ved hjelp av F8- tasten.

Hvis jeg trykker på F8- tasten en gang til, vil det skjule arket som heter " Salg ".

Trykk nå på F8-tasten en gang til og se hva som skjer.

Vi har fått feilen "Abonnement utenfor rekkevidde" fordi den nåværende kodelinjen sier nedenfor.

Arbeidsark ("Profit 2019"). Synlig = xlVeryHidden

Det prøver å skjule regnearket med navnet " Profit 2019 ", men det er ikke noe regneark med navnet "Profit 2019".

I slike tilfeller, hvis regnearket ikke finnes i arbeidsboken, må vi ignorere feilen og fortsette å kjøre koden ved å ignorere feilen "Subscript out of range".

Den neste linjen i koden sier

Regneark ("Profitt"). Synlig = xlVeryHidden

Dette regnearket finnes i denne arbeidsboken, så uten å ignorere feilen, kan vi ikke flytte til denne kodelinjen.

For å ignorere denne feilen, må vi legge til uttalelsen "On Error Resume Next".

Kode:

Sub On_Error () Ved feil Gjenoppta neste regneark ("Salg"). Visible = xlVeryHidden Worksheets ("Profit 2019"). Visible = xlVeryHidden Worksheets ("Profit"). Visible = xlVeryHidden End Sub

Som du kan se ovenfor, har jeg lagt til uttalelsen øverst i koden før noen av linjene starter. Kjør nå koden og se hva som skjer.

Nå er jeg i linjen som fikk feilen tidligere, trykk på F8-tasten og se hva som skjer.

Jeg har hoppet til neste kodelinje uten å vise noen feil på grunn av utsagnet vi har lagt til øverst, som er "On Error Resume Next" VBA-setning.

Eksempel 2

Nå skal vi se hvordan vi kan bruke denne uttalelsen med et eksempel til. Se på datastrukturen nedenfor for dette eksemplet.

Vi har to tabeller over den første tabellen som har Emp-navn og deres lønnsdetaljer i den andre tabellen, og vi har bare Emp-navn, så ved å bruke VLOOKUP må vi hente lønnsdetaljene fra venstre sidetabell.

Nedenfor er koden jeg hadde skrevet for å hente detaljene.

Kode:

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

Kjør nå koden linje for linje og se hva som skjer.

Når vi kjører den første cellekoden, har vi fått resultatet for den første ansatte. Gjenta det samme for den andre ansatte også.

Denne gangen har vi fått feilmeldingen. La oss se på det andre ansattens navn i tabellen.

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.

To ansattnavn , " Gayathri & Karanveer ", er ikke der på listen, så disse linjekodene må ha møtt på en feil siden vi har lagt til en feilbehandlingserklæring om " On Error Resume Next ", den har ignorert denne kodelinjen og gjenopptatt for neste ansatt.

Ting å huske her

  • “On Error Resume Next” er feilbehandlingsuttalelsen når vi trenger å ignorere den kjente feilen.
  • Hvis du bare vil ignorere feilmeldingen for et spesifikt sett med kode, lukker du på feilmeldingen for å fortsette neste setning ved å legge til " On Error GoTo 0 " -utsagnet.

Interessante artikler...