VBA On Error Goto 0 | Kā lietot Excel VBA uz kļūdas GoTo 0?

Excel VBA On Error Goto 0

VBA On Error GoTo 0 ir kļūdu apstrādātāja paziņojums, ko izmanto, lai atspējotu iespējoto kļūdu apstrādātāju procedūrā. To dēvē par “Error Handler Disabler”.

Kļūdu apstrāde jebkurā no programmēšanas valodām ir meistarklase, kas visiem kodētājiem jāsaprot. Arī VBA programmēšanas valoda, un šajā programmēšanas valodā mums ir arī kļūdu apstrādes paņēmieni. “On Error Resume Next” iespējo kļūdu apstrādātāju, bet “On Error GoTo 0” atspējo iespējoto kļūdu apstrādātāju.

Gan “On Error Resume Next”, gan “On Error GoTo 0” ir pāri, kas koda efektivitātei jāizmanto tandēmā. Lai apstrādātu kļūdas, mums jāsāk ar paziņojumu “On Error Resume Next” un, lai izbeigtu šo kļūdu apstrādātāju, mums jāizmanto paziņojums “On Error GoTo 0”.

Jebkurš līnijas kods, kas rakstīts starp šiem paziņojumiem, ignorēs jebkāda veida kļūdas, kas radušās procesā.

Kā lietot OnTrode GoTo 0 paziņojumu?

Jūs varat lejupielādēt šo VBA On Error Goto 0 Excel veidni šeit - VBA On Error Goto 0 Excel veidni

Piemēram, skatiet zemāk esošo kodu.

Kods:

 Sub On_ErrorExample1 () darblapas ("Sheet1"). Atlasiet diapazonu ("A1"). Vērtība = 100 darblapas ("Sheet2"). Atlasiet diapazonu ("A1"). Vērtība = 100 End Sub 

Iepriekšminētais kods vispirms atlasīs darblapu ar nosaukumu “Sheet1” un šūnā A1 ievietos vērtību 100.

Kods:

Darblapas ("Sheet1"). Atlasiet diapazonu ("A1"). Vērtība = 100

Tad tā atlasīs darblapu ar nosaukumu “Sheet2” un ievietos to pašu vērtību.

Kods:

Darblapas ("2. lapa"). Atlasiet diapazonu ("A1"). Vērtība = 100

Tagad manā darbgrāmatā ir zemāk esošās lapas.

Nav lapu ar nosaukumu “Sheet1” un “Sheet2”, palaižot kodu, radīsies tāda kļūda kā zemāk.

Tā kā nav nevienas lapas, kuras nosaukums būtu “Sheet1”, tai radās kļūda “Subscript out of range”. Lai novērstu šo kļūdu, makro augšdaļā pievienošu kļūdu apstrādātāja paziņojumu “On Error Resume Next”.

Kods:

 Sub On_ErrorExample1 () Ieslēdzot kļūdu, atsākt nākamās darblapas ("Sheet1"). Atlasiet diapazonu ("A1"). Vērtība = 100 darblapas ("Sheet2"). Atlasiet diapazonu ("A1"). Vērtība = 100 End Sub 

Tagad palaidiet kodu un uzziniet, kas notiek.

Tas nedos nekādus kļūdu ziņojumus, jo ir iespējots kļūdu apstrādātāja paziņojums On Error Resume Next .

Iedomājieties scenāriju, kurā mums ir jāignorē kļūda, ja darblapa “Sheet1” nav pieejama, bet mums jāpaziņo, ja nav darblapas ar nosaukumu “Sheet2”.

Tā kā augšpusē esam pievienojuši On Error Resume Next , tā ir sākusi rīkoties ar kļūdu, bet tajā pašā laikā mums jānorāda, cik rindu mums ir jāignorē šī kļūda.

Šajā piemērā mums vienkārši jāignorē pirmās darblapas kļūda, bet, sākot no otrās lapas, mums ir nepieciešama kļūda, ja nav darblapas “Sheet2”. Tātad pēc pirmās darblapas koda kļūdas atspējošanas rinda ir pievienota kļūdai GoTo 0.

Kods:

 Sub On_ErrorExample1 () Ieslēdzot kļūdu, atsākt nākamās darblapas ("Sheet1"). Atlasiet diapazonu ("A1"). Vērtība = 100 On Error kļūdas gadījumā GoTo 0 darblapas ("Sheet2"). Atlasiet diapazonu ("A1"). Value = 100 End Sub 

Tagad palaidiet kodu pa rindai, lai redzētu ietekmi, nospiežot taustiņu F8.

Tagad, nospiežot taustiņu F8, koda izpilde pāriet uz nākamo rindu un tiks izpildīts aktīvās līnijas uzdevums. Tagad aktīvā līnija (dzeltenās krāsas līnija) ir “On Error Resume Next” kļūdu apstrādātājs, un kļūdu apstrādātājs tiks iespējots.

Tagad rodas jebkura kļūda, tā tiks ignorēta, līdz izpildīs kļūdu apstrādātāju, kas atspējo kodu “ On Error GoTo 0 ”.

Iepriekšējā mēģinājumā mēs esam saskārušies ar kļūdām, taču vēlreiz nospiediet taustiņu F8 un redzam burvību.

Nesniedzot nekādas kļūdas, tas ir atsācis koda izpildi, kaut arī nav atlasāma darblapa “Sheet2”. Tagad vēlreiz nospiediet F8.

Tā kā nebija Sheet1, tā nevar ievietot vērtību A1 šūnā kā 500, bet tas, ko tas dara, ievietos 500 vērtību šūnā A1 atkarībā no tā, kura darblapa ir aktīva. Mana aktīvā lapa, izpildot kodu, bija “Sheet3”, tāpēc 100 vērtība tiek ievietota šūnā A1.

Tagad aktīvā koda rindiņa ir “ On Error GoTo 0 ”, nospiežot taustiņu F8, šis līnijas uzdevums tiks izpildīts.

Tā kā tiek izpildīts “On Error GoTo 0”, tas ir apturējis kļūdu apstrādes procesu un atkal sāk rādīt kļūdas, ja tādas notiek. Nospiediet taustiņu F8 un skatiet kļūdu.

Iepriekšējā gadījumā bez On Error GoTo 0 tas ir ignorējis arī šo kļūdu, taču, tā kā mēs esam pievienojuši kļūdu apstrādātāja atspējošanu, tā atkal ir parādījusi kļūdu.

Šeit jāatceras lietas

  • Gan ieslēgtās kļūdas atsākšana, gan ieslēgšanas kļūda GoTo 0 ir jāizmanto kā “ Kļūdu apstrādātāja iespējotājs ” un “ Kļūdu apstrādātāja atspējošana ”.
  • Jebkurā kodu rindā starp šiem diviem paziņojumiem rodas kļūda, kas tiks ignorēta.
  • Ja ir paziņojums On Error GoTo 0, pēc iziešanas no apakšprocedūras kļūdu apstrādātājs tiks atspējots.

$config[zx-auto] not found$config[zx-overlay] not found