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

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.

Man būs jāpievieno loģiskais tests programmā Excel, ja IF k = 6, tad iziet no Sub .

Kods:

Sub Exit_Example1 () Dim k Tik ilgi, kamēr 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 palaist cilpu, līdz k vērtība kļūst 6.

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

Kā redzam, tas ir izcēlis vārdu “Exit Sub”. Nospiežot taustiņu F8, tas izies no apakšprocedūras, nenonākot 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 sadalī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 zīmolu kā

ErrorHandler: iziet no apakšnodaļas

Tiklīdz kods saskaras ar kļūdu, tas nospiedīs kodu, lai pārietu uz etiķeti, un zīmolam ir paziņojums “Exit Sub”, lai izietu no apakšprocedūras.

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

Kā redzat šūnā C7, tā ir pieļāvusi kļūdu kā “Sadalījums pa 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 paziņotu lietotājam 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.

Interesanti raksti...