„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, kad kilpa turėtų veikti 10 kartų, ir, atsižvelgiant į pateiktą sąlygą, jei langelio vertė ar bet kuris kitas pateiktas kriterijus yra sėkmingas, tada jis turi išeiti iš „Excel“ ciklo, kol jis užpildys visą ciklo 10 kvotą. Šiame straipsnyje mes parodysime, kaip išeiti iš ciklo pagal pateiktus kriterijus.

Kaip pertraukti / išeiti iš VBA kilpų?
# 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 pirmose 10 langelių yra bet kokia vertė. Tam langelyje A8 įvedžiau tam tikrą teksto vertę.

Dabar noriu tai nurodyti kode sakydamas: „Jei ciklo langelis turi tam tikrą vertę, jis 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 langeliai (K, 1). Vertė = "", tada
ląstelės (K, 1). Vertė = K
dar
išeiti iš
pabaigos, jei
Jame parašyta „If Cells“ (K, 1). Reikšmė = „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ą. Jis įterps serijos numerius iki langelio A7.

Minėtas kodas iškart išėjo iš ciklo nieko nesakydamas; kaip mes žinome, kad tai išėjo iš ciklo.
Norėdami pašalinti šį neaiškumą, turime įdėti vieną paprastą VBA pranešimų laukelį žemiau.
Kodas:
Sub Exit_Loop () Dim K ilgai, kai K = nuo 1 iki 10, jei langeliai (K, 1) .Value = "" Tada ląstelės (K, 1) .Value = K Kita MsgBox "Mes 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 langelis, 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ė įvedama per klaidą, mes 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ą tol, kol kintamojo reikšmė taps 6. Po to jis išeis iš ciklo. Jei norite parodyti pranešimą vartotojui, taip pat galite pridėti pranešimo laukelį.
Kodas:
Sub Exit_DoUntil_Loop () Dim K ilgai, K = 1 darykite iki K = 11, jei K 5 "išeikite, jei baigsite, jei K = K + 1 ciklo pabaiga
Tai parodys toliau pateiktą pranešimą.

Panašiai, remdamiesi pateiktais kriterijais, galime išeiti iš ciklo, jei kriterijai yra TIKRI, arba galime tęsti ciklą.