Kā ignorēt kļūdas, izmantojot VBA On Error Resume Next Statement?

Satura rādītājs

Excel VBA On Error Resume Next

VBA On Error Resume Next ir kļūdu apstrādātāja paziņojums. Ja kļūda rodas, palaižot kodu, nevis parāda kļūdu, lai atsāktu nākamo koda rindu, ignorējot kļūdas ziņojumu, varat izmantot šo paziņojumu.

Tie, kas regulāri raksta kodus Excel VBA, zina, ka pat pēc prasmīgu kodu uzrakstīšanas viņiem var rasties kļūdas, taču viņi vēlas šo kļūdu ignorēt un turpināt darboties ar nākamajām koda rindām. Viens tipisks kļūdas ziņojuma saņemšanas piemērs ir gadījums, kad darblapas VLOOKUP funkcija neatrod uzmeklēšanas vērtību no tabulas masīva. Tas neatgriezīs kļūdu Nr. N / A; drīzāk tas izmetīs kļūdu. Kā “Nevar iegūt darblapas funkciju klases rekvizītu VLOOKUP.”

Ja jūs nezināt, kāpēc mums rodas šī kļūda, tad ir ļoti grūti novērst kļūdu. VBA mums ir funkcija ar nosaukumu “ On Error Resume Next ”.

Ko pēc kļūdas atsākšanas darīt tālāk VBA?

Ir noteiktas zonas kā kodētājs. Mēs noteikti zināsim, ka tas dos kļūdas ziņojumu, taču mums ir jāignorē šī kļūda, lai turpinātu pārlūkot kodu, tāpēc kā vispār ignorēt šo kļūdu, visiem ir šaubas.

Izmantojot VBA On Error Resume Next paziņojumu, mēs varam ignorēt kļūdu un atsākt nākamo koda rindu.

1. piemērs

Pieņemsim, ka jums ir daudz darblapu, un dažas no tām jūs slēpjat kā daļu no VBA projekta. Piemēram, zemāk ir darblapas, kas man ir manā darblapā.

Esmu uzrakstījis kodus, lai paslēptu lapas “Pārdošana un“ Peļņa ”, un zemāk ir kods.

Kods:

Sub On_Error () darblapas ("Sales"). Visible = xlVeryHidden darblapas ("Peļņa 2019"). Visible = xlVeryHidden darblapas ("Peļņa"). Visible = xlVeryHidden End Sub

Tagad es sākšu palaist kodu pa rindām, izmantojot F8 taustiņu.

Ja es vēlreiz nospiedīšu taustiņu F8 , tas paslēps lapu ar nosaukumu “ Pārdošana ”.

Tagad vēl vienu reizi nospiediet taustiņu F8 un skatieties, kas notiek.

Mums ir kļūda “Apakšraksts ārpus diapazona”, jo pašreizējā koda rindiņā ir teikts tālāk.

Darblapas ("Peļņa 2019"). Redzams = xlVeryHidden

Tā mēģina paslēpt darblapu ar nosaukumu “ Peļņa 2019 ”, taču darblapas ar nosaukumu “Peļņa 2019” nav.

Šādos gadījumos, ja darbgrāmata darbgrāmatā nepastāv, mums ir jāignorē kļūda un jāturpina koda palaišana, ignorējot kļūdu “Apakšraksts ārpus diapazona”.

Nākamā koda rindiņa saka

Darblapas ("Peļņa"). Redzams = xlVeryHidden

Šī darblapa patiešām pastāv šajā darbgrāmatā, tāpēc, neignorējot kļūdu, mēs nevaram pāriet uz šo koda rindu.

Lai ignorētu šo kļūdu, mums jāpievieno paziņojums “On Error Resume Next”.

Kods:

Apakšējā On_Error () Ieslēgta kļūda Atsākt nākamās darblapas ("Pārdošana"). Visible = xlVeryHidden darblapas ("Peļņa 2019"). Visible = xlVeryHidden darblapas ("Peļņa"). Visible = xlVeryHidden End Sub

Kā redzat iepriekš, pirms jebkuras rindas sākuma es pievienoju paziņojumu koda augšdaļā. Tagad palaidiet kodu un uzziniet, kas notiek.

Tagad esmu rindā, kurai iepriekš tika piešķirta kļūda, nospiediet taustiņu F8 un redzu, kas notiek.

Es esmu pārlēcis uz nākamo koda rindu, nerādot kļūdas, augšdaļā pievienotā paziņojuma dēļ, kas ir VBA paziņojums “On Error Resume Next”.

2. piemērs

Tagad mēs redzēsim, kā izmantot šo apgalvojumu ar vēl vienu piemēru. Šajā piemērā skatiet zemāk esošo datu struktūru.

Mums ir divas tabulas virs pirmās tabulas, kuru otrajā tabulā ir Emp nosaukums un viņu algu informācija, un mums ir tikai Emp nosaukums, tāpēc, izmantojot VLOOKUP, mums ir jāatlasa informācija par algu no kreisās puses tabulas.

Zemāk ir kods, kuru es biju uzrakstījis, lai iegūtu detaļas.

Kods:

Sub On_Error1 () Dim k As Long For k = 2 līdz 8 šūnas (k, 6). Vērtība = WorksheetFunction.VLookup (šūnas (k, 5), diapazons ("A: B"), 2, 0) Nākamais k beigas Apakšgrupa

Tagad palaidiet kodu pa rindai un redziet, kas notiek.

Palaidot pirmo šūnas kodu, mēs esam ieguvuši rezultātu par pirmo darbinieku. Atkārtojiet to pašu arī otrajam darbiniekam.

Šoreiz mēs saņēmām kļūdas ziņojumu. Apskatīsim tabulas otro darbinieka vārdu.

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.

Divu darbinieku vārdu “ Gayathri & Karanveer ” sarakstā nav, tāpēc šiem rindu kodiem ir jābūt kļūdām, jo ​​mēs esam pievienojuši kļūdu apstrādātāja paziņojumu “ On Error Resume Next ”. Tas ir ignorējis šo koda rindu un atsācis nākamajam darbiniekam.

Šeit jāatceras lietas

  • “On Error Resume Next” ir kļūdu apstrādātāja paziņojums, kad mums jāignorē zināmā kļūda.
  • Ja vēlaties ignorēt kļūdas ziņojumu tikai noteiktai kodu kopai, pēc tam aizveriet ieslēgšanas kļūdas atsākšanas nākamo paziņojumu, pievienojot paziņojumu “ On Error GoTo 0 ”.

Interesanti raksti...