VBA paus silmuse jaoks - Kuidas Exceli VBA-s silmusest väljuda?

Lang L: none (table-of-contents)

Exceli VBA paus silmuse jaoks

In VBA Break Loop on tuntud ka väljumise silmus iga silmus igal korras on antud som11e juhistega või kriteeriumid seda käivitada nuber aega, kuid see on väga tavaline, et mõned loop get lõppahelasse seega demoraliseeriv Sellistes stsenaariumides vajame koodi jaoks pausi või väljumist, et teatud olukordadest välja tulla.

Oletame, et oleme käskinud tsüklit käitada kümme korda ja antud tingimuse põhjal peab lahtriväärtus või mõni muu esitatud kriteerium edukaks osutuma, kui ta täidab kogu tsükli 10 kvoodi. Selles artiklis näitame teile, kuidas antud kriteeriumide alusel tsüklist väljuda.

Kuidas VBA silmusid katkestada / väljuda?

# 1 - katkestus järgmise ringi jaoks

Rakendust VBA For Next Loop kasutatakse rakkude vahel liikumiseks ja kindla ülesannete komplekti täitmiseks. Näiteks vaadake allpool olevat VBA-koodi.

Kood:

Sub Exit_Loop () Dim K nii pikk kui K = 1 kuni 10 lahtrit (K, 1). Väärtus = K Järgmine K End Sub

See sisestab seerianumbrid lahtrist A1 kuni A10.

For Next Loopi puhul on see ilmne asi.

Nüüd tahan katkestada tsükli, kui esimesest 10 lahtrist leitakse mõni väärtus. Selleks olen lahtrisse A8 sisestanud teksti väärtuse.

Nüüd tahan seda koodis juhendada, öeldes: "Kui silmusrakul on kindel väärtus, peab ta enne ettemääratud piiri piirist väljuma."

Kood:

Sub Exit_Loop () Dim K nii kaua kui K = 1 kuni 10, kui lahtrid (K, 1). Väärtus = "" Siis lahtrid (K, 1). Väärtus = K Muu väljumine lõpuks, kui järgmine K End Sub

Vaadake järgmist koodirida:

Kui rakud (K, 1) .Value = "" Siis
Rakud (K, 1) .Value = K
Else
väljumise
End Kui

Seal on kirjas If Cells (K, 1). Väärtus = “silmuse lahter on võrdne mitte millegagi, jätkake seerianumbrite 1 kuni 10 sisestamise tsüklit.

Lingi viimane osa ütleb:

Muidu

Väljuge

Kui ülaltoodud tingimus ei ole TÕSI, siis tsükkel „Välju”.

Nüüd käivitage kood. See sisestab seerianumbrid kuni lahtrini A7.

Ülaltoodud kood väljus silmusest kohe midagi ütlemata; kuidas me teame, et see on ringist väljunud.

Selle ebaselguse kõrvaldamiseks peame allpool panema ühe lihtsa VBA-sõnumikasti.

Kood:

Sub Exit_Loop () Dim K nii kaua kui K = 1 kuni 10, kui lahtrid (K, 1). Väärtus = "" Siis lahtrid (K, 1). Väärtus = K Muu MsgBox "Meil on lahtris tühi lahter" & Lahtrid (K, 1). Aadress & vbNewLine & "Me väljume tsüklist" Exit For End If Next K End Sub

Lahtrist läbi liikudes kuvatakse lahtris A8 teade: "Meil on tühi lahter, lahtris A8. Me väljume silmusest ”.

See teavitab kasutajat ka lahtriaadressiga silmusest väljumisest. Kui mõni väärtus sisestatakse ekslikult, saame kontrollida sõnumikasti tagastatud lahtri aadressi.

# 2 - Break Tee kuni silmuse

Sarnaselt sellele, kuidas me oleme järgmiseks aasaks väljunud, võime samamoodi väljuda ka „Tee kuni” silmusest. Näiteks vaadake allolevat koodi.

Kood:

Sub Exit_DoUntil_Loop () Dim K nii kaua, kui K = 1 tee kuni K = 11 lahtrit (K, 1). Väärtus = KK = K + 1 aasa lõpp Sub

See kood täidab ka seerianumbrite sisestamise ülesannet. Näiteks kui soovime silmusest väljuda, kui muutuja „k” väärtus muutub 6-ks, peame sisestama kriteeriumid, kui IF k = 6, siis väljuge tsüklist.

Kood:

Sub Exit_DoUntil_Loop () Hämarda K nii kaua, kui K = 1 tee kuni K = 11, kui K <6, siis lahtrid (K, 1). Väärtus = K muu väljumine lõpeta, kui K = K + 1 silmus lõpeb alam

See käivitab tsüklit, kuni muutuja väärtus saab 6. Pärast seda väljub see tsüklist. Kui soovite sõnumit kasutajale näidata, saate ka sõnumikasti lisada.

Kood:

Sub Exit_DoUntil_Loop () Hämarda K nii kaua, kui K = 1 tee kuni K = 11, kui K 5 "Exit Do Lõpeta, kui K = K + 1 aasa lõpp Sub

See näitab allolevat teadet.

Niimoodi saame antud kriteeriumide põhjal tsüklist väljuda, kui kriteeriumid on TÕENÄGED, vastasel juhul võime tsüklit jätkata.

Huvitavad Artiklid...