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

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 perustuen annettuun ehtoon, 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 sinulle kuinka poistua silmukasta annettujen kriteerien perusteella.

Kuinka katkaista / poistua silmukoista VBA: ssa?

Voit ladata tämän VBA Break for Loop Excel -mallin täältä - VBA Break for Loop Excel -malli

# 1 - Tauko seuraavaan silmukkaan

VBA For Next Loop -silmukkaa käytetään solujen silmukointiin ja tiettyjen tehtävien suorittamiseen. Katso esimerkki alla olevasta VBA-koodista.

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 jokin 10 ensimmäisestä solusta löydetty arvo, tähän olen kirjoittanut jonkin verran tekstiä arvoa soluun A8.

Haluan nyt opettaa tämän koodissa sanomalla "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

Muu

  Lopeta

Loppu Jos

Siinä sanotaan, että Jos solut (K, 1). Arvo = "" -silmukka-solu on yhtä suuri kuin mikään, jatka sarjanumeroiden lisäämisen väliä 1-10.

Silmukan viimeinen osa sanoo:

Muu

  Lopeta

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

Suorita nyt koodi, joka lisää sarjanumerot A7-soluun.

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 kuten alla.

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 jokin ei-tyhjä solu löytyy, se näyttää sanoman "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

Kuten siitä, kuinka olemme poistuneet For Next Loopista, samoin voimme 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 jos K = K + 1 Loop End Sub 

Tämä ajaa silmukkaa, kunnes muuttujan arvosta tulee 6, minkä 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 annettujen kriteerien perusteella voimme poistua silmukasta, jos kriteerit ovat TOSI, tai muuten voimme jatkaa silmukkaa.


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