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

Satura rādītājs

Excel VBA On Error Goto 0

VBA On Error GoTo 0 ir kļūdu apstrādātāja paziņojums, ko izmanto, lai procedūrā atspējotu iespējoto kļūdu apstrādātāju. 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, un “On Error GoTo 0” atspējos 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 novērstu kļūdu, mums jāsāk ar paziņojumu “On Error Resume Next” un jāpārtrauc šis kļūdu apstrādātājs. 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?

Piemēram, apskatiet zemāk redzamo 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 šādas lapas.

Nav lapu ar nosaukumu “Sheet1” un “Sheet2”. Kad palaidīsim kodu, tajā radīsies tāda kļūda kā zemāk.

Tā kā nav nevienas lapas, kuras nosaukums būtu “Sheet1”, tajā ir parādījusies kļūda “Subscript ārpus diapazona”. 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 , tas ir sācis rīkoties ar kļūdu, taču tajā pašā laikā mums jānorāda, cik rindu mums jāignorē šī kļūda.

Šajā piemērā mums vienkārši jāignorē pirmā darblapas, bet otrās lapas kļūda. 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"). Vērtība = 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. Tas tiks ignorēts, līdz tas 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, tas 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, tas atkal ir parādījis kļūdu.

Šeit jāatceras lietas

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

Interesanti raksti...