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.