VBA-tauko silmukalle - Kuinka poistua silmukasta Excel VBA: ssa?

Sisällysluettelo

Excel VBA -tauko silmukalle

Julkaisussa VBA Break For Loop tunnetaan myös nimellä silmukan poistumiseksi, jokaiselle prosessille jokaiselle silmukalle on annettu jokin joukko ohjeita tai kriteerejä, jotta se voi ajaa nuberia, mutta on hyvin yleistä, että joku silmukka pääsee äärettömään silmukkaan, mikä vioittaa koodia tällaisissa skenaarioissa tarvitsemme tauon tai poistumisen silmukasta päästäkseen tietyistä tilanteista.

Oletetaan, että olemme käskeneet silmukan toimimaan 10 kertaa, ja annetun ehdon perusteella, jos solun arvo tai jokin muu toimitettu kriteeri onnistuu, sen on poistuttava Excel-silmukasta, ennen kuin se täyttää 10 silmukan koko kiintiön. Tässä artikkelissa näytämme, kuinka poistut silmukasta annettujen kriteerien perusteella.

Kuinka katkaista / poistua silmukoista VBA: ssa?

# 1 - Tauko seuraavaan silmukkaan

VBA For Next Loop -silmukkaa käytetään solujen silmukointiin ja tiettyjen tehtävien suorittamiseen. Katso esimerkiksi alla olevaa VBA-koodia.

Koodi:

Sub Exit_Loop () Dim K niin kauan kuin K = 1-10 solua (K, 1). Arvo = K Seuraava K End Sub

Tämä lisää sarjanumerot solusta A1 A10.

Tämä on ilmeinen asia For Next Loopissa.

Haluan nyt katkaista silmukan, kun 10 ensimmäisestä solusta löytyy arvo. Tätä varten olen kirjoittanut tekstiarvon soluun A8.

Haluan nyt opettaa tämän koodissa sanoen: "Jos silmukointisolulla on tietty arvo, sen on poistuttava silmukasta ennen ennalta määritettyä rajaa."

Koodi:

Sub Exit_Loop () Himmennä K niin kauan kuin K = 1-10 Jos solut (K, 1) .Arvo = "" Sitten solut (K, 1) .Arvo = K Muu Lopeta loppuun, jos seuraava K End Sub

Katso nämä koodirivit:

Jos solut (K, 1) .Arvo = "" Sitten
solut (K, 1) .arvo = K
Muuten
lopeta
lopetus jos

Siinä lukee If Cells (K, 1). Value = “silmukkasolu on yhtä suuri kuin mikään, jatka sarjanumeroiden väliltä 1–10.

Silmukan viimeinen osa sanoo:

Muu

Lopeta

Jos yllä oleva ehto ei ole TOSI, ”Exit For” -silmukka.

Suorita nyt koodi. Se lisää sarjanumerot A7-soluun asti.

Yllä oleva koodi poistui silmukasta heti sanomatta mitään; mistä tiedämme, että se on poistunut silmukasta.

Tämän epäselvyyden poistamiseksi meidän on lisättävä yksi yksinkertainen VBA-viestiruutu alle.

Koodi:

Sub Exit_Loop () Dim K niin kauan kuin K = 1-10 Jos solut (K, 1) .Arvo = "" Sitten solut (K, 1) .Arvo = K Muut MsgBox "Meillä ei ole tyhjää solua solussa" & Solut (K, 1). Osoite & vbNewLine & "Olemme poistumassa silmukasta" Lopeta loppuun Jos seuraava K loppu ali

Kun silmukoituu solun läpi, jos löytyy tyhjä solu, se näyttää viestin, jossa sanotaan: "Meillä on tyhjä solu solussa A8. Olemme poistumassa silmukasta ”.

Tämä ilmoittaa käyttäjälle myös silmukan poistumisesta soluosoitteella. Jos jokin arvo syötetään vahingossa, voimme tarkistaa viestiruutuun palautetun solun osoitteen.

# 2 - Tauko, kunnes silmukka

Samoin kuin olemme poistuneet For Next Loopista, voimme vastaavasti poistua myös "Do Until" -silmukasta. Katso esimerkiksi alla oleva koodi.

Koodi:

Sub Exit_DoUntil_Loop () Dim K niin kauan K = 1 tee kunnes K = 11 solua (K, 1). Arvo = KK = K + 1 silmukan loppu Sub

Tämä koodi suorittaa myös sarjanumeroiden lisäämisen tehtävän. Esimerkiksi, jos haluamme poistua silmukasta, kun muuttujan "k" arvosta tulee 6, meidän on syötettävä ehdot, jos IF k = 6, ja sitten poistuttava silmukasta.

Koodi:

Sub Exit_DoUntil_Loop () Dim K niin kauan K = 1 Tee kunnes K = 11 Jos K <6 Sitten solut (K, 1). Arvo = K muu Exit Do End End jos K = K + 1 Loop End Sub

Tämä suorittaa silmukan, kunnes muuttujan arvoksi tulee 6. Sen jälkeen se poistuu silmukasta. Jos haluat näyttää viestin käyttäjälle, voit lisätä myös viestiruudun.

Koodi:

Sub Exit_DoUntil_Loop () Dim K niin kauan K = 1 Tee kunnes K = 11 Jos K 5 "Exit Do End Jos K = K + 1 Loop End Sub

Tämä näyttää alla olevan viestin.

Tällä tavoin voimme annettujen kriteerien perusteella poistua silmukasta, jos kriteerit ovat TOSI, tai muuten voimme jatkaa silmukkaa.

Mielenkiintoisia artikkeleita...