VBA par kļūdu paziņojumiem Top 3 veidi, kā rīkoties ar kļūdām

Excel VBA par kļūdu paziņojumu

VBA On Error paziņojums ir kļūdu apstrādes mehānisma veids, ko izmanto, lai vadītu kodu rīkoties, ja rodas jebkāda veida kļūda, parasti, kad kods saskaras ar kļūdu, izpilde apstājas, bet ar šo paziņojumu kodā tiek izpildīta kods turpina darboties, kā tas ir norādījis, kā rīkoties, kad rodas kļūda.

Paredzot kļūdu kodā, jūs esat profesionālis VBA kodēšanā. Jūs nevarat padarīt kodu par 100% efektīvu. Pat ja esat pārliecināts par savu kodu vienā vai otrā veidā, tas var izraisīt kļūdu.

Gandrīz neiespējams uzdevums ir identificēt un apstrādāt jebkura veida kļūdas, taču mums ir dažādi veidi, kā rīkoties ar kļūdām VBA. Rakstot kodu, jūs, iespējams, neparedzat, kādu kļūdas kodu var radīt, taču, ja rodas kāda kļūda, jūs pavadīsit vairāk laika atkļūdošanai nekā paša koda rakstīšana.

Kas ir kļūda?

Kļūda ir nekas cits, taču koda rindu nevar izpildīt funkcionalitātes vai nepareiza koda dēļ. Tāpēc mēģiniet paredzēt kļūdu un rīkoties ar to.

Piemēram, ja mēģināt izdzēst lapu, kuras tur nav, tad acīmredzot mēs nevaram izpildīt šo koda rindu.

Kļūda ir trīs veidu, viena ir apkopota kļūda nedeklarētu mainīgo dēļ. Otrais ir datu ievades kļūda nepareizu kodētāja ierakstu dēļ, un trešā ir darbības laika kļūda, kas VBA dēļ nevar atpazīt koda rindiņu. Par mēģinājumu piekļūt darblapai vai darbgrāmatai vai strādāt ar to, kuras tur nav.

Bet mums ir paziņojums VBA, lai apstrādātu visas šāda veida kļūdas, ti, “On Error” paziņojums.

Kļūdu paziņojumu veidi

Galvenais kļūdu apstrādes punkts VBA ir paziņojums “On Error”. Piemēram, ieslēdzot kļūdu, “atsākt nākamo rindu”, “pāriet vai pāriet uz citu rindu” utt.

Paziņojumā On Error ir trīs veidu paziņojumi.

  1. GoTo 0 nozīmē, ka ikreiz, kad rodas izpildes laika kļūda, Excel vai VBA vajadzētu parādīt kļūdas ziņojumu lodziņu, norādot, kāda veida kļūda tā ir radusies. Tiklīdz VBA izpilda kodu, tā atspējo visus kļūdu apstrādātājus konkrētajā koda blokā.
  2. Resume Next nozīmē, ka vienmēr, kad rodas kļūda, šis paziņojums liek Excelam ignorēt šo kļūdu un pāriet uz (atsākt nākamo) nākamo koda rindu, nerādot nekādus kļūdu ziņojumus. Tas nenozīmē, ka tas novērsīs kļūdu; drīzāk tas vienkārši ignorē kļūdu.
  3. GoTo (etiķete) nozīmē, ka ikreiz, kad VBA rodas kļūda, dodieties uz piešķirto etiķeti. Tas liek kodam pāriet uz konkrēto līniju, ko nodrošina kodētājs.

Top 3 veidi, kā rīkoties ar kļūdām VBA

# 1 - ieslēdzot kļūdu, atsākt nākamo

Pieņemsim, ka jūs dalāt vērtību 20 ar 0, un esat deklarējis mainīgo, lai tam piešķirtu dalīšanas rezultātu.

Kods:

Sub OnError_Example1 () Dim i kā vesels skaitlis i = 20/0 End Sub

Ja palaidīsit šo kodu, tas radīs zemāk redzamo kļūdu.

Tātad nevienu skaitli nevar dalīt ar nulles vērtību. Izpildes laika kļūdas numurs ir 11, ti, dalījums ar nulli.

Tagad kodam pievienošu vēl vienu rindiņu.

Kods:

Sub OnError_Example1 () Dim i kā vesels skaitlis, j As Integer i = 20/0 j = 20/2 End

Tagad es augšpusē pievienošu paziņojumu Par kļūdu atsākšanu.

Kods:

Sub OnError_Example1 () Dim i kā vesels skaitlis, j kā Integer ieslēgts kļūda Atsākt Nākamais i = 20/0 j = 20/2 End Sub

Tagad, ja izpildīšu šo kodu, tas nedos man kļūdu ziņojumus; drīzāk tas izpildīs nākamo koda rindiņu, ti, j = 20/2.

# 2 - ieslēgta kļūda GoTo Label

Esmu deklarējis trīs mainīgos.

Kods:

Sub OnError_Example1 () Dim i kā vesels skaitlis, j kā vesels skaitlis, k kā vesels skaitlis

Visiem šiem trim mainīgajiem es piešķiršu sadalījuma aprēķinu.

Kods:

Sub OnError_Example1 () Dim i kā vesels skaitlis, j kā vesels skaitlis, k As skaitlis i = 20/0 j = 20/2 k = 10/5

Visu šo trīs aprēķinu rezultāts tiks parādīts ziņojumu lodziņā.

Kods:

Sub OnError_Example1 () Dim i kā vesels skaitlis, j kā vesels skaitlis, k As skaitlis i = 20/0 j = 20/2 k = 10/5 MsgBox "i vērtība ir" & i & vbNewLine & "j vērtība ir "& j & _ vbNewLine &" k vērtība ir "& k & vbNewLine End Sub

Tagad es mēģināšu izpildīt šo kodu, jo “I” aprēķins nav pareizs. Mēs saņemsim izpildes laika kļūdu 11.

Tagad es pievienošu paziņojumu “On Error Resume Next”.

Kods:

Sub OnError_Example1 () Dim i kā vesels skaitlis, j kā vesels skaitlis, k kā vesels skaitlis On kļūda Atsākt Nākamais i = 20/0 j = 20/2 k = 10/5 MsgBox "i vērtība ir" & i & vbNewLine & "The j vērtība ir "& j & _ vbNewLine &" k vērtība ir "& k & vbNewLine End Sub

Ja es to izpildīšu, tas izlaidīs “I” aprēķinu un izpildīs atlikušos divus aprēķinus, un rezultāts būs šāds.

Tagad vietā “On Error Resume Next” pievienošu “On Error GoTo KCalculation”.

Kods:

Sub OnError_Example1 () Dim i kā vesels skaitlis, j kā vesels skaitlis, k kā vesels skaitlis On kļūda GoTo K Aprēķins: i = 20/0 j = 20/2 K Aprēķins: k = 10/5 MsgBox "i vērtība ir" & i & vbNewLine & "J vērtība ir" & j & _ vbNewLine & "k vērtība ir" & k & vbNewLine End Sub
Piezīme: Šeit “KCalculation” ir manis piešķirtais etiķetes nosaukums; jūs varat dot savu etiķetes nosaukumu bez atstarpes.

Tagad, ja es izpildīšu šo koda rindiņu, tas netiks pāriet uz nākamo rindu. Drīzāk tas pāriet uz manis ievadīto etiķetes nosaukumu, ti, “KCalcualtion”. Šeit tas ignorēs kļūdu, ko devis “I”, kā arī neveiks “j” aprēķinu, bet uzreiz pāriet uz “KCalcualtion”.

# 3 - drukas kļūdas numurs VBA

Koda beigās mēs varam arī izdrukāt kļūdas numuru atsevišķā ziņojumu lodziņā. Šādu darbu veiks šī koda rinda.

Kods:

Kļūda. Numurs

Tagad es palaidīšu šo kodu pirmais ziņojuma lodziņš parādīs aprēķinu rezultātus.

Noklikšķiniet uz Labi. Tas parādīs vēl vienu ziņojumu lodziņu, lai parādītu kļūdas numuru.

Mēs ejam 11; rezultātā, ti, dalīšana ar nulli.

Numura vietā mēs varam arī iegūt kļūdas aprakstu. Mums vienkārši jāmaina kods. Zemāk ir kods.

Kods:

Kļūda. Apraksts

Tas parādīs šādu aprakstu.

Atceramās lietas

  • Pēc koda beigās ievadītā “On Error Resume Next” neaizmirstiet pievienot paziņojumu “On Error GoTo 0.”
  • Marķējuma nosaukumam abās vietās jābūt vienādiem.
  • Etiķešu nosaukumi nav jādefinē laikus.
  • Galu galā vienmēr skatiet, kāda ir kļūda, izmantojot atsevišķu ziņojumu lodziņu.

Interesanti raksti...