VBA Exit Sub | Izađite iz VBA potprocedure ako uvjeti nisu ispunjeni

Excel VBA Izlazni potprocedura

Izlaz Sub naredba izlazi iz potprocedure prije definiranih redaka VBA kodova. Međutim, da bismo izašli iz potprocedure moramo primijeniti neku vrstu logičkog testa.

Konstruirajmo ovo na jednostavan način.

 Sub MacroName () '...' Ovdje je neki kod '... Izađi iz Sub' Izađi iz Sub-a bez izvođenja daljnjih redaka koda ispod '...' Ovaj će se kôd zanemariti '... Kraj Sub 

Primjeri

Ovaj VBA Exit Sub Excel Predložak možete preuzeti ovdje - VBA Exit Sub Excel Predložak

Primjer # 1

Za bolji primjer pogledajte donji kod.

Kodirati:

 Sub Izlaz_Primjer1 () Dim k Koliko dugo traje k = 1 do 10 ćelija (k, 1) .Vrijednost = k Sljedeći k Kraj Sub 

Gornji kod umetnut će serijske brojeve od 1 do 10 u ćelije A1 do A10.

Sada želim umetnuti samo 5 serijskih brojeva i čim vrijednost varijable "k" postane 6, želim izaći iz pod.

Zbog toga ću morati dodati logički test u excel kao AKO je k = 6 Zatim izađi iz Sub .

Kodirati:

 Sub Exit_Example1 () Dim k Koliko dugo traje k = 1 do 10 Ako je k = 6 Zatim izađite iz Sub 'Čim k vrijednost postane 6, zanemarit će sve kodove i izaći iz ćelija (k, 1). Vrijednost = k Sljedeći k Kraj Pod 

Sada pokrenite kod red po redak. Pritisnite tipku F8 da započnete postupak.

Od sada je vrijednost k nula.

Za promjenu vrijednosti k na 1 pritisnite još jednom tipku F8.

Dakle, vrijednost k je 1, naš kôd nastavlja raditi i umetnut će 1 u ćeliju A1. Ovako nastavite izvoditi petlju dok vrijednost k ne postane 6.

Sada je vrijednost k 6, a linija koda će izvršiti naš logički test za izlazak iz potprocedure. Ako još jednom pritisnem tipku F8, izravno ćete izaći iz cijelog potprocedura.

Kao što vidimo istaknuo je riječ "Exit Sub" . Pritiskom na tipku F8 izaći će iz potprocedure bez odlaska na riječ "End Sub" .

Primjer # 2 - U slučaju pogreške Izađite iz potprocedure

Također možemo izaći iz potprocedure kada dobijemo vrijednosti pogreške. Na primjer, razmotrite dolje navedene podatke o dijeljenju broja1 od broja 2.

Ispod je kod za dobivanje podjele dva broja.

Kodirati:

 Sub Izlaz_Primjer2 () Dim k Koliko dugo traje k = 2 do 9 ćelija (k, 3) .Vrijednost = Ćelije (k, 1) .Vrijednost / ćelije (k, 2) .Vrijednost Sljedeća k Kraj Sub 

Kao što znamo, niti jedan broj ne možemo podijeliti s nulom. Dakle, ako to pokušamo, dobit ćemo pogrešku kao Pogreška vremena izvođenja '11': Podjela po nuli.

Da bih to izbjegao čim naiđemo na bilo kakvu pogrešku, spomenut ću svoj makronared za izlazak iz potprocedure s trenutnim učinkom. Dolje navedeni kod jedan je od takvih slučajeva.

Kodirati:

 Sub Exit_Example2 () Dim k Koliko dugo traje k = 2 do 9 U slučaju greške Idite na ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: Exit Sub Kraj pod 

U gornjem primjeru spomenuo sam izjavu "O pogrešci, prijeđi na ErrorHandler". Ovdje je riječ ErrorHandler oznaka koju sam dodijelio. Ako vidite na dnu koda, oznaku sam spomenuo kao

ErrorHandler: Izlaz iz pod 

Dakle, čim kôd naiđe na pogrešku, on će gurnuti kôd da skoči na naljepnicu i naljepnica ima izjavu "Exit Sub", tako da će izaći iz potprocedure.

Sada ću pokrenuti kod, on će izračunavati podjelu dok ne pronađe pogrešku.

Kao što možete vidjeti u ćeliji C7 naišla je na pogrešku kao "Podjela po nuli" pa je izašla iz potprocedure. Bez obavještavanja korisnika koji izlazi iz potprocedure uvijek je opasna stvar. Da bismo obavijestili korisnika o pogrešci, možemo uključiti jedan mali okvir s porukom.

Kodirati:

 Sub Exit_Example2 () Dim k Koliko dugo traje k = 2 do 9 Na grešci Idi na stanice s pogreškama (k, 3) .Vrijednost = stanice (k, 1) .Vrijednost / stanice (k, 2). Vrijednost naprijed k ErrorHandler: MsgBox " Došlo je do pogreške, a pogreška je: "& vbNewLine & Err.Opis Izlaz Sub End Sub 

Gornji kod prikazat će poruku pogreške, a zatim izaći iz potprocedure. Tijekom izvođenja koda, ako se dogodi pogreška, prikazat će se okvir za poruke u VBA-u, kao u nastavku.

Ovo je pouzdaniji način izlaska iz potprocedura.