VBA pertrauka kilpai | Kaip išeiti iš „Excel VBA“ ciklo?

„Excel VBA Break for Loop“

VBA Break For Loop“ taip pat žinomas kaip išėjimas iš kilpos, kiekvienai bet kurios procedūros kilpai buvo pateiktas instrukcijų ar kriterijų rinkinys, kad ji galėtų paleisti laiko nuberį, tačiau labai dažnai kai kuri kilpa patenka į begalinę kilpą, taip sugadindama kodą tokiuose scenarijuose mums reikia pertraukos arba išeiti iš ciklo, kad išeitume iš tam tikrų situacijų.

Tarkime, mes nurodėme kilpą paleisti 10 kartų ir, atsižvelgiant į pateiktą sąlygą, jei langelio vertė ar bet kuris kitas pateiktas kriterijus yra sėkmingas, jis turi išeiti iš „Excel“ ciklo, kol jis užpildys visą 10 ciklo kvotą. Šiame straipsnyje , mes parodysime, kaip išeiti iš ciklo pagal pateiktus kriterijus.

Kaip pertraukti / išeiti iš VBA kilpų?

Šį „VBA Break For Loop Excel“ šabloną galite atsisiųsti čia - „VBA Break For Loop Excel“ šablonas

# 1 - pertrauka kitai kilpai

„VBA For Next Loop“ naudojama norint perjungti langelius ir atlikti tam tikrą užduočių rinkinį. Pavyzdžiui, pažvelkite į žemiau esantį VBA kodą.

Kodas:

 Sub Exit_Loop () Dim K ilgai, kai K = nuo 1 iki 10 langelių (K, 1). Vertė = K Kitas K End Sub 

Taip bus įterpti serijos numeriai nuo langelio A1 iki A10.

Tai akivaizdus dalykas „For Next Loop“.

Dabar noriu nutraukti kilpą, kai bet kuri vertė randama 10 pirmųjų langelių, tam aš įvedžiau tam tikrą teksto reikšmę langelyje A8.

Dabar aš noriu tai nurodyti kode sakydamas: „Jei ciklo ląstelė turi tam tikrą vertę, ji turi išeiti iš ciklo prieš iš anksto nustatytą ribą“.

Kodas:

 Sub Exit_Loop () Dim K ilgai, kai K = nuo 1 iki 10, jei langeliai (K, 1). Vertė = "" Tada ląstelės (K, 1). Vertė = K kita išeiti iš pabaigos, jei kita K pabaiga Sub 

Pažvelkite į šias kodo eilutes:

Jei ląstelės (K, 1). Vertė = "" Tada

Ląstelės (K, 1). Vertė = K

Kitas

  Išėjimas už

Pabaiga jei

Jame sakoma, jei langeliai „K“ (K, 1). Vertė = „“ ciklo langelis yra lygus niekam, tęskite serijos numerių įterpimo nuo 1 iki 10 ciklą.

Paskutinė ciklo dalis sako:

Kitas

  Išėjimas už

Jei pirmiau nurodyta sąlyga nėra TIESA, tada kilpa „Išeiti“.

Dabar paleiskite kodą, kuris įterps serijos numerius iki A7 langelio.

Aukščiau pateiktas kodas iškart išėjo iš ciklo nieko nepasakęs. Kaip mes žinome, kad jis išėjo iš kilpos.

Norėdami pašalinti šį neaiškumą, turime įdėti vieną paprastą VBA pranešimų laukelį, kaip nurodyta toliau.

Kodas:

 Sub Exit_Loop () Dim K ilgai, kai K = nuo 1 iki 10, jei ląstelės (K, 1) .Vert = = "Tada ląstelės (K, 1) .Vertumas = K Kitos MsgBox" Gavome ne tuščią langelį langelyje "& Langeliai (K, 1). Adresas & vbNewLine & "Mes išeiname iš ciklo" Išeiti iš pabaigos, jei kitas K pabaigos antrinis 

Peržiūrėjus langelį, jei randama tuščia ląstelė, langelyje A8 bus rodomas pranešimas „Mes gavome ne tuščią langelį. Mes išeiname iš kilpos “.

Tai taip pat informuos vartotoją apie kilpos išėjimą su langelio adresu. Jei kuri nors reikšmė įvesta per klaidą, galime patikrinti langelio adresą, grąžintą pranešimo laukelyje.

# 2 - pertrauka darykite iki ciklo

Kaip ir tai, kaip mes išėjome iš „Next Loop“, taip pat galime išeiti iš „Do Iki“ ciklo. Pavyzdžiui, pažvelkite į žemiau pateiktą kodą.

Kodas:

 Sub Exit_DoUntil_Loop () Dim K tol, kol K = 1 darykite, kol K = 11 langelių (K, 1). Vertė = KK = K + 1 ciklo pabaigos sub 

Šis kodas taip pat atlieka eilės numerių įterpimo užduotį. Pavyzdžiui, jei norime išeiti iš ciklo, kai kintamojo „k“ reikšmė tampa 6, turime įvesti kriterijus, jei IF k = 6, tada išeiti iš ciklo.

Kodas:

 Sub Exit_DoUntil_Loop () Dim K tol, kol K = 1 daryk, kol K = 11, jei K <6, tada ląstelės (K, 1). Reikšmė = K kita išeiga baigiasi, jei K = K + 1 kilpa pabaigos sub 

Tai vykdys ciklą, kol kintamoji reikšmė taps 6, po to ji išeis iš ciklo. Jei norite parodyti pranešimą vartotojui, taip pat galite pridėti pranešimų laukelį.

Kodas:

 Sub Exit_DoUntil_Loop () Dim K tol, kol K = 1 darykite tol, kol K = 11, jei K 5 "išeikite, atlikite pabaigą, jei K = K + 1 ciklo pabaiga Sub 

Tai parodys toliau pateiktą pranešimą.

Panašiai kaip pagal pateiktus kriterijus, mes galime išeiti iš ciklo, jei kriterijai yra TIKRI, kitaip galime tęsti ciklą.


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