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 'brez izvajanja nadaljnjih vrstic kode pod' … 'Ta koda bo prezrta' … End Sub

Primeri

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 samo 5 serijskih številk in takoj, ko vrednost spremenljivke "k" postane 6, želim zapustiti pod.

Moral bom dodati logični test v excelu, če JE 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.

Zdaj je vrednost k enaka nič.

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

Torej vrednost k je 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 šel 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 znamko omenil kot

ErrorHandler: Izhod iz pod

Takoj, ko koda naleti na napako, bo potisnila kodo, da skoči na oznako, blagovna znamka pa ima izjavo "Exit Sub", tako da bo zapustila podproces.

Zdaj bom zagnal kodo; delil bo izračun, 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 za sporočila.

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. Če se med izvajanjem kode pojavi napaka, se v VBA prikaže okno za sporočila, kot spodaj.

To je bolj zanesljiv način izstopa iz podprocedure.

Zanimive Članki...