VBA izejas apakšnodaļa Iziet no VBA apakšprocedūras, ja nosacījumi nav izpildīti

Excel VBA iziešanas apakšprocedūra

Exit Sub paziņojums iziet no apakšprocedūras agrāk nekā definētās VBA kodu rindas. Tomēr, lai izietu no apakšprocedūras, mums jāpielieto kaut kāds loģisks tests.

Konstruēsim to vienkārši.

 Sub MacroName () '...' Daži kodi šeit '... Exit Sub' Iziet no Sub, neveicot citas koda rindas zem '...' Šis kods tiks ignorēts '... End Sub 

Piemēri

Šo VBA Exit Sub Excel veidni varat lejupielādēt šeit - VBA Exit Sub Excel Template

1. piemērs

Labāku piemēru skatiet zemāk esošajā kodā.

Kods:

 Sub Exit_Example1 () Dim k As Long For k = 1 līdz 10 šūnas (k, 1). Vērtība = k Nākamais k Beigas Sub 

Iepriekš minētais kods šūnās A1 līdz A10 ievietos sērijas numurus no 1 līdz 10.

Tagad es vēlos ievietot tikai 5 sērijas numurus, un tiklīdz mainīgā “k” vērtība kļūst 6, es vēlos iziet no apakšgrupas.

Lai to izdarītu, man būs jāpievieno loģiskais tests programmā Excel, ja IF k = 6, tad iziet no Sub .

Kods:

 Sub Exit_Example1 () Dim k As Long For k = 1 līdz 10 Ja k = 6, tad Exit Sub 'Tiklīdz k vērtība kļūst 6, tas ignorēs visus kodus un izies no šūnām (k, 1). Vērtība = k Nākamais k Beigas Apakšgrupa 

Tagad palaidiet kodu pa rindām. Lai sāktu procesu, nospiediet taustiņu F8.

Pašlaik k vērtība ir nulle.

Lai mainītu k vērtību uz 1, vēlreiz nospiediet taustiņu F8.

Tātad k vērtība ir 1, mūsu kods turpina darboties un ievietos 1 šūnā A1. Šādi turpiniet darbināt cilpu, līdz k vērtība kļūst 6.

Tagad k vērtība ir 6, un koda rindiņa gatavojas izpildīt mūsu loģisko pārbaudi, lai izietu no apakšprocedūras. Ja es vēlreiz nospiedīšu taustiņu F8, tas uzreiz izies tikai no visas apakšprocedūras.

Kā redzam, tas ir izcēlis vārdu “Exit Sub” . Nospiežot taustiņu F8, tas izies no apakšprocedūras, nedodoties pie vārda “End Sub” .

2. piemērs - ieslēdzoties kļūdai, izejiet no apakšprocedūras

Mēs varam arī iziet no apakšprocedūras, kad iegūstam kļūdas vērtības. Piemēram, ņemiet vērā šādus datus par skaitļa 1 dalīšanu ar skaitli 2.

Zemāk ir kods, lai iegūtu divu skaitļu sadalījumu.

Kods:

 Sub Exit_Example2 () Dim k As Long For k = 2 līdz 9 šūnas (k, 3). Vērtība = šūnas (k, 1). Vērtība / šūnas (k, 2). Vērtība Nākamais k Beigas Sub 

Kā mēs zinām, mēs nevaram dalīt nevienu skaitli ar nulli. Tātad, ja mēs mēģināsim to izdarīt, mēs saņemsim kļūdu kā izpildes laika kļūda '11': dalījums pēc nulles.

Lai no tā izvairītos, tiklīdz rodas kāda kļūda, es pieminēšu savu makro, lai nekavējoties izietu no apakšprocedūras. Zemāk redzamais kods ir viens no šādiem gadījumiem.

Kods:

 Sub Exit_Example2 () Dim k As Long For k = 2 līdz 9 Kļūdā GoTo ErrorHandler Cells (k, 3). Vērtība = Cells (k, 1). Vērtība / Cells (k, 2). Vērtība Next k ErrorHandler: Exit Sub Beigu apakšnodaļa 

Iepriekš minētajā piemērā esmu minējis paziņojumu “On Error Goto ErrorHandler”. Šeit vārds ErrorHandler ir man piešķirtā etiķete. Ja jūs redzat koda apakšdaļā, es minēju etiķeti kā

ErrorHandler: iziet no apakšnodaļas 

Tiklīdz kods sastāda kļūdu, tas nospiedīs kodu, lai pārietu uz etiķeti, un etiķetei ir paziņojums “Exit Sub”, tāpēc izies no apakšprocedūras.

Tagad es palaidīšu kodu, tas aprēķinās sadalījumu, līdz atradīs kļūdu.

Kā redzams šūnā C7, tā ir pieļāvusi kļūdu kā “Dalīšana ar nulli”, tāpēc tā ir izejusi no apakšprocedūras. Neinformējot lietotāju, kurš iziet no apakšprocedūras, vienmēr ir bīstama lieta. Lai informētu lietotāju par kļūdu, mēs varam iekļaut vienu nelielu ziņojumu lodziņu.

Kods:

 Sub Exit_Example2 () Dim k As Long For k = 2 līdz 9 On Error GoTo ErrorHandler Cells (k, 3). Vērtība = Cells (k, 1). Vērtība / Cells (k, 2). Vērtība Nākamais k ErrorHandler: MsgBox " Radās kļūda, un kļūda ir: "& vbNewLine & Err.Description Exit Sub End Sub Sub 

Iepriekš minētais kods parādīs kļūdas ziņojumu, pēc tam izejot no apakšprocedūras. Palaižot kodu, ja rodas kļūda, tas parādīs ziņojumu lodziņu VBA, piemēram, zemāk.

Tas drīzāk ir uzticams veids, kā iziet no apakšprocedūras.


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