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

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, a čim vrijednost varijable "k" postane 6, želim izaći iz pod.

Morat ću dodati logički test u excelu 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.

Da biste vrijednost k promijenili na 1, pritisnite tipku F8 još jednom.

Dakle, vrijednost k je 1, naš kod 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 sprema se izvršiti naš logički test za izlazak iz potprocedure. Ako još jednom pritisnem tipku F8, izravno će se prebaciti samo na cijeli postupak.

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 Idi na stanice s pogreškama (k, 3) .Vrijednost = stanice (k, 1) .Vrijednost / stanice (k, 2). Vrijednost naprijed k ErrorHandler: Izađi iz 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, marku sam spomenuo kao

ErrorHandler: Izlaz iz pod

Čim kôd naiđe na pogrešku, on će gurnuti kôd da skoči na naljepnicu, a marka ima izjavu "Exit Sub" (Izlaz iz pod) tako da će izaći iz potprocedure.

Sada ću pokrenuti kod; računat će 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 korisnika obavijestili 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 Idite na ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: MsgBox " Došlo je do pogreške, a pogreška je: "& vbNewLine & Err.Opis Izlaz Sub End Sub

Gornji kôd 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 potprocedure.

Zanimljivi članci...