VBA Exit Sub | Zaprite podproceduro VBA, če pogoji niso izpolnjeni

Excel VBA Izhodni podproces

Izkaz Sub stavek zapusti podproces prej kot definirane vrstice kod VBA. Za izhod iz podprocedure pa moramo uporabiti nekakšen logični test.

Zgradimo to s preprostimi izrazi.

 Sub MacroName () '...' Tukaj je nekaj kode '... Izhod Sub' Izhod iz Sub-ja brez izvajanja nadaljnjih vrstic kode spodaj '...' Ta koda bo prezrta '... End Sub 

Primeri

To predlogo VBA Exit Sub Excel Predlogo lahko prenesete tukaj - VBA Exit Sub Excel Predloga

Primer # 1

Za boljši primer si oglejte spodnjo kodo.

Koda:

 Podizhod_Primer1 () Dim k Dolgo za k = 1 do 10 celic (k, 1) .Vrednost = k Naslednji k Konec Sub 

Zgornja koda bo vstavila serijske številke od 1 do 10 v celice A1 do A10.

Zdaj želim vstaviti le 5 serijskih številk in takoj, ko vrednost spremenljivke "k" postane 6, želim zapustiti podmapo.

Za to bom moral dodati logični test v excelu, če je IF k = 6 Potem zapustite Sub .

Koda:

 Sub Exit_Example1 () Dim k Dolgo za k = 1 do 10 Če je k = 6 Potem zapustite Sub 'Takoj, ko k vrednost postane 6, bo prezrl vse kode in zapustil Celice (k, 1). Vrednost = k Naslednji k Konec Pod 

Zdaj zaženite kodo vrstico za vrstico. Pritisnite tipko F8, da začnete postopek.

Od zdaj je vrednost k enaka nič.

Če želite vrednost k spremeniti na 1, še enkrat pritisnite tipko F8.

K vrednost je torej 1, naša koda se še naprej izvaja in bo v celico A1 vstavila 1. Tako kot nadaljujte z zanko, dokler vrednost k ne postane 6.

Zdaj je vrednost k 6 in vrstica kode bo kmalu izvedla naš logični test za izhod iz podprocedure. Če še enkrat pritisnem tipko F8, bo takoj zapustil celoten podproces.

Kot vidimo, je poudaril besedo "Exit Sub" . S pritiskom na tipko F8 bo zapustil podproces, ne da bi prišel do besede "End Sub" .

2. primer - ob napaki Zaprite podproceduro

Podproceduro lahko zapustimo tudi, ko dobimo vrednosti napak. Na primer, upoštevajte spodnje podatke delitve števila1 od števila 2.

Spodaj je koda za delitev dveh števil.

Koda:

 Sub Izhod_Primer2 () Dim k Dolgo za k = 2 do 9 celic (k, 3) .Vrednost = Celice (k, 1) .Vrednost / celice (k, 2) .Vrednost Naprej k Konec Sub 

Kot vemo, nobenega števila ne moremo deliti z nič. Torej, če poskusimo to storiti, bomo dobili napako kot napako med izvajanjem '11': Division By Zero.

Da bi se temu izognili takoj, ko naletimo na napako, bom omenil svoj makro za takojšen izhod iz podprocedure. Spodnja koda je en tak primer.

Koda:

 Sub Exit_Example2 () Dim k as long for k = 2 To 9 On Error GoTo ErrorHandler Cells (k, 3) .Value = Celice (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: Exit Sub Končaj pod 

V zgornjem primeru sem omenil izjavo "On Error Goto ErrorHandler". Tu je beseda ErrorHandler oznaka, ki sem jo dodelil. Če vidite na dnu kode, sem oznako označil kot

ErrorHandler: Izhod iz pod 

Takoj ko koda naleti na napako, bo potisnila kodo, da skoči na nalepko in nalepka ima stavek "Exit Sub", tako da bo izstopila iz podprocedure.

Zdaj bom zagnal kodo, izračunaval bo delitev, dokler ne bo našel napake.

Kot lahko vidite v celici C7, je prišlo do napake kot "Division by Zero", zato je zapustila podproces. Brez obveščanja uporabnika, ki zapusti podproces, je vedno nevarna stvar. Če želite uporabnika obvestiti o napaki, lahko vključimo eno majhno okence s sporočilom.

Koda:

 Sub Exit_Example2 () Dim k as long for k = 2 to 9 On Error GoTo ErrorHandler Cells (k, 3) .Value = Celice (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: MsgBox " Prišlo je do napake in napaka je: "& vbNewLine & Err.Opis Izhod Sub End Sub 

Zgornja koda bo prikazala sporočilo o napaki in nato zapustila podproces. Med izvajanjem kode, če pride do napake, bo v VBA prikazano okno za sporočilo, kot spodaj.

To je bolj zanesljiv način izstopa iz podprocedure.