VBA Exit Sub | Väljuge VBA alamprotseduurist, kui tingimused ei ole täidetud
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 '... Exit Sub' Exit Sub, väljundamata koodiridasid allpool '...' Seda koodi eiratakse '... End Sub
Näited
Selle VBA Exit Sub Exceli malli saate alla laadida siit - VBA Exit Sub Exceli mallNä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, soovin alamast väljuda.
Selleks pean lisama Excelis loogilise testi, 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 1 muutmiseks vajutage veel kord klahvi F8.
Nii et k väärtus on 1, meie kood töötab ja lisab lahtrisse A1 1. Niimoodi jätkake tsüklit, 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, väljub see otse ainult kogu alamprotseduurist.
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 me teame, ei saa me ühtegi arvu nulliga jagada. Nii et kui proovime seda teha, kuvatakse tõrge 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 määratud silt silt ErrorHandler. Kui näete koodi allservas, olen maininud silti
ErrorHandler: Exit Sub
Niipea kui kood ilmneb veaga, sunnib see koodi sildile hüppamiseks ja sildil on lause "Exit Sub", nii et väljute alamprotseduurist.
Nüüd käivitan koodi, see arvutab jaotuse, kuni leiab vea.
Nagu näete lahtris C7, ilmnes viga jagunemisega nulliga, seega on see alamprotseduurist väljunud. Alamprotseduurist väljuvat kasutajat teavitamata on alati ohtlik asi. Kasutaja teavitamiseks veast 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 vea korral VBA-s sõnumikast nagu allpool.
See on pigem usaldusväärne viis alammenetlusest väljumiseks.