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žakPrimjer # 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.