VBA Exit Sub - Väljuge VBA alamprotseduurist, kui tingimused pole täidetud

Lang L: none (table-of-contents)

Exceli VBA väljumise alamprotseduur

Exit Sub lause väljub alamprotseduurist varem kui VBA koodide määratletud read. Alamprotseduurist väljumiseks peame siiski rakendama mingisuguse loogilise testi.

Ehitame selle lihtsa sõnastusega.

Sub MacroName () '…' Siin on mõni kood '

Näited

Näide 1

Parema näite saamiseks vaadake allolevat koodi.

Kood:

Alam Exit_Näide1 () Dim k nii kaua kui k = 1 kuni 10 lahtrit (k, 1). Väärtus = k Järgmine k End Sub

Ülaltoodud kood sisestab lahtritesse A1 kuni A10 seerianumbrid 1 kuni 10.

Nüüd tahan sisestada ainult 5 seerianumbrit ja niipea, kui muutuja “k” väärtus saab 6, tahan alamast väljuda.

Pean Excelis loogilise testi lisama, kui k = 6, siis väljuge alamast .

Kood:

Alamväljund_näide1 () Dim k nii kaua kui k = 1 kuni 10 Kui k = 6, siis väljuge alamast 'Niipea, kui k väärtus saab 6, eirab see kõiki koode ja väljub lahtritest (k, 1). Väärtus = k Järgmine k Lõpp Alam

Nüüd käivitage kood rida realt. Menetluse alustamiseks vajutage klahvi F8.

Praeguse seisuga on k väärtus null.

K väärtuse muutmiseks väärtuseks 1 vajutage veel kord klahvi F8.

Nii et k väärtus on 1, meie kood töötab ja lisab lahtrisse A1 1. Nii jätkake silmuse käivitamist, kuni k väärtuseks saab 6.

Nüüd on k väärtus 6 ja koodirida hakkab alamprotseduurist väljumiseks läbi viima meie loogilise testi. Kui vajutan klahvi F8 veel kord, läheb see otse kogu alamprotseduuri.

Nagu näeme, on see esile tõstnud sõna „Exit Sub”. Kui vajutate klahvi F8, väljub see alamprotseduurist, minemata sõnale “End Sub”.

Näide # 2 - sisselülitatud vea korral väljuge alamprotseduurist

Samuti saame alamprotseduurist väljuda, kui saame vea väärtused. Näiteks võtke arvesse allpool toodud andmeid numbri 1 jagamiseks numbrist 2.

Allpool on kood kahe numbri jagamise saamiseks.

Kood:

Sub Exit_Näide2 () Dim k nii kaua, kui k = 2 kuni 9 lahtrit (k, 3). Väärtus = lahtrid (k, 1). Väärtus / lahtrid (k, 2). Väärtus Järgmine k End Sub

Nagu teame, ei saa me ühtegi arvu nulliga jagada. Nii et kui proovime seda teha, saame vea kui Run Time Error '11': jagamine nulliga.

Selle vältimiseks niipea, kui ilmnevad vead, mainin oma makrot, et alamprotseduurist kohe väljuda. Üks selline juhtum on järgmine kood.

Kood:

Alamväljund_näide2 () Dim k nii kaua, kui k = 2 kuni 9 Vea korral GoTo ErrorHandleri lahtrid (k, 3). Väärtus = lahtrid (k, 1). Väärtus / lahtrid (k, 2). Väärtus Järgmine k ErrorHandler: Exit Sub Lõpeta alam

Ülalolevas näites olen maininud väidet „On Error Goto ErrorHandler.” Siin on minu jaoks määratud silt ErrorHandler. Kui näete koodi allservas, olen maininud kaubamärki kui

ErrorHandler: Exit Sub

Niipea kui kood ilmneb veaga, lükkab see koodi sildile hüppamiseks ja brändil on lause "Exit Sub", et see väljuks alamprotseduurist.

Nüüd käivitan koodi; see arvutab jaotuse, kuni leiab vea.

Nagu näete lahtris C7, ilmnes selles viga jagunemisega nulliga, seega on see alamprotseduurist väljunud. Alamprotseduurist väljuvat kasutajat teavitamata on alati ohtlik asi. Kasutajale veast teatamiseks võime lisada ühe väikese sõnumikasti.

Kood:

Alamväljund_näide2 () Dim k nii kaua, kui k = 2 kuni 9 Vea korral GoTo ErrorHandleri lahtrid (k, 3). Väärtus = lahtrid (k, 1). Väärtus / lahtrid (k, 2). Väärtus Järgmine k ErrorHandler: MsgBox " Ilmnes viga ja see on: "& vbNewLine & Err.Description Exit Sub End Sub Sub

Ülaltoodud kood kuvab tõrketeate ja väljub alamprotseduurist. Koodi käivitamise ajal kuvatakse tõrke ilmnemisel VBA-s sõnumikast nagu allpool.

See on pigem usaldusväärne viis alammenetlusest väljumiseks.

Huvitavad Artiklid...