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 mall

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, 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.


$config[zx-auto] not found$config[zx-overlay] not found