VBA kilpos - 4 geriausių kilpų tipų sąrašas (su pavyzdžiais)

„Excel VBA“ kilpos

Kilpos paprastai naudojamos visomis programavimo kalbomis, kai yra tam tikras poreikis arba kriterijai, kai mums reikia tam tikro kodo, kad paleistume tam tikrą laiką, mes naudojame tų kodų kilpas, dabar VBA yra daugybė kilpų tipų, tokių kaip „Do“ o „Atlikti iki“, „Už kilpą“ ir „Už kiekvieną kilpą“ šios kilpos padeda kodui vykdyti, kol įvykdoma sąlyga.

Leiskite man pasakyti šį teiginį pačioje pradžioje. "Jei norite įsisavinti VBA, turite baigti VBA makrokomandų kilpų koncepciją."

Kilpa yra ne kas kita, kaip pereiti per daugybę ląstelių, pereiti per daugybę objektų, kad pakartotume tą pačią užduotį ląstelėms ar objektams rinkti. Užuot atlikę užduotį atskirame kodų eilučių rinkinyje, naudodami kilpas, galime kuo mažiau sutrumpinti kodo ilgį.

4 geriausių VBA kilpų tipų sąrašas

  1. „Kitas ciklas“
  2. Kiekvienai kilpai
  3. Darykite, kol kilpa
  4. Daryk iki kilpos

Pažiūrėkime kiekvieną iš šių tipų išsamiai.

1 tipas - „Next Loop“

„Next loop“ leidžia mums pereiti per langelių diapazoną ir atlikti tą pačią užduotį kiekvienai ląstelei, nurodytai cikle. Čia turime pasakyti pradinį ir pabaigos numerį.

Pavyzdys

Pavyzdžiui, jei norite įterpti serijos numerius nuo 1 iki 10, žemiau pateikiamas tradicinis serijos numerių įterpimo būdas.

Antrinis serijos numeris ()

Diapazonas („A1“). Vertė = 1
diapazonas („A2“). Vertė = 2
diapazonas („A3“). Reikšmė = 3
diapazonas („A4“). Vertė = 4
diapazonas („A5“). Reikšmė = 5
Diapazonas („A6“). Reikšmė = 6
Diapazonas („A7“). Vertė = 7
Diapazonas („A8“). Vertė = 8
Diapazonas („A9“). Vertė = 9
Diapazonas („A10“). Vertė = 10

Pabaigos sub

Atrodo gerai, ar ne? Tačiau problema yra tik 10 kartų, kai turime atlikti šią užduotį. Bet įsivaizduokite, ką daryti, jei norite įterpti 100 ar 1000 skaičių, ar galite parašyti kodą 100 ar 1000 eilučių. Tai neįmanoma, ir būtent čia yra naudinga „For Next“ kilpos grožis.

1 žingsnis: Atidarykite makro ir paskelbti kintamąjį i kaip sveikasis skaičius.

Sub Insert_Serial_Number ()

Dim i kaip sveikasis skaičius

Pabaigos sub

2 žingsnis: Dabar atidarykite „ For Loop“ . Čia paminėkite ciklo pradžią ir pabaigą naudodami kintamąjį i.

3 žingsnis: Dabar parašykite kodą, kurį norite atlikti. A1 ir A10 langeliuose turime įterpti skaičius nuo 1 iki 10. Užuot taikę diapazono metodą, naudokite ląstelių metodą.

Jis klausia eilutės numerio, nes kintamąjį i mes jau deklaravome kaip sveikąjį skaičių. Jo vertė yra 1. Taigi paminėkite, kad man patinka jūsų eilutės numeris ir 1, kaip stulpelio numerį.

Dabar esamos langelio vertės vertė turėtų būti viena, užuot paminėjus pirmąją paminėjimą i kaip vertę. Kiekvieną kartą bėgant, i vertė padidės 1.

Dabar paspauskite klavišą F8, kad pereitumėte į vieną eilutę. Spauskite F8, kol pasieks For kilpą.

Ši geltona spalva rodo, kad netrukus bus paleista pasirinkta kodo eilutė. Užveskite žymeklį ant I ir jo vertė bus lygi nuliui.

Dabar paspauskite dar vieną kartą F8 klavišą ir uždėkite žymeklį ant i & dabar vertė yra 1.

Taigi i reikšmės visur visur yra lygios 1. „ Ląstelės (I, 1). Reikšmė = I“ reiškia Ląstelės (1, 1). Vertė = 1.

Paspauskite klavišą F8 ir pamatykite reikšmę langelyje A1. A1 langelyje turite pamatyti 1.

Dabar, jei paspausite klavišą F8, jis dar kartą grįš į kilpą For, nes kintamojo i galinė riba yra 10. Šiuo metu I reikšmė bus 2.

„Next“ ciklas veiks 10 kartų ir įterpkite serijos numerius nuo 1 iki 10.

2 tipas - kiekvienai kilpai

Kiekvienai VBA kilpai skirtas objektų rinkinys. Jei norite, kad kita kilpa vyktų per langelius, atlikite užduotį, o kiekvienai - kilpa per objektus, tokius kaip darbalapiai, diagramos, darbaknygės, formos.

Naudodamiesi šia kilpa galime pereiti visus darbalapius ir atlikti kai kurias užduotis. Pvz., Galite paslėpti visus darbalapius, kad paslėptumėte ir nerodytumėte darbalapių.

1 pavyzdys

Jei norite paslėpti visus darbalapius, išskyrus lapą, prie kurio dirbate, kaip tai padarysite? Jei darbo knygoje turite 20 lapų, tai užima daug laiko. Bet naudodami KIEKVIENĄ kilpą, galime atlikti šią užduotį.

Aš turiu 5 lapus ir noriu paslėpti visus lapus, išskyrus tai, kad užduotis atliktų žemiau pateiktas kodas „Pagrindinis“.

Sub To_Hide_All_Sheet ()

„Dim Ws“ kaip darbalapis

Kiekvienam W į „ActiveWorkbook“. Darbo lapai

Jei Ws.Name „Pagrindinis“, tada
Ws.Visible = xlSheetVeryHidden
End Jei

Kitas Ws

Pabaigos sub

2 pavyzdys

Jei norite paslėpti visus paslėptus lapus, žemiau pateiktas kodas atliks darbą už jus.

Sub To_UnHide_Specific_Sheet ()

„Dim Ws“ kaip darbalapis

Kiekvienam W į „ActiveWorkbook“. Darbo lapai

Ws.Visible = xSheetVisible

Kitas Ws

Pabaigos sub

3 tipas - darykite, kol kilpa

„Do while loop“ vykdo užduotį, kol nurodyta sąlyga yra TIESA, o kai sąlyga taps NETIESA, ji nustos vykdyti ciklą. Skirtingai nuo kitų dviejų kilpų, „Do While“ bando sąlygą ciklo pabaigoje, o ne pradžioje.

Aš jums parodysiu serijos numerių įterpimo su „Do while loop“ pavyzdžiu.

Sub Do_While_Example ()

Dim i kaip sveikasis skaičius

i = 1
darykite, kai i <11
ląstelių (i, 1). Vertė = i
i = i + 1
kilpa

Pabaigos sub

Minėta kilpa veiks, kol i yra mažesnis nei 11, ir vis įterpia serijos numerius. Tą akimirką, kai tapsiu didesnis nei 11 metų, jis nebebus kilpinis.

4 tipas - darykite iki ciklo

Skirtingai nuo ciklo „Do Nors“, ciklas „Do Do“ nevykdomas, kai sąlyga yra TIESA; veikiau, jis tęsiasi, kol sąlyga yra NETIESA. Pavyzdžiui, pažvelkite į žemiau pateiktą kodą.

Sub Do_Until_Example ()

Dim i kaip sveikasis skaičius

i = 1
darykite tol, kol i = 11
ląstelių (i, 1). Vertė = i
i = i + 1
kilpa

Pabaigos sub

Vienintelis ciklas „Do while & Do Until“ skiriasi nuo mūsų nurodyto operatoriaus. „Do“, nors mes minėjome ciklo paleidimą, kai i yra mažesnis nei (<), 11, bet darome iki ciklo, paminėjome paleisti kilpą, kol i yra lygus (=) iki 11.

Ką reikia atsiminti

  • Yra pažangesnis „Excel VBA“ ciklo pavyzdys, tačiau kiekvieną iš jų išsamiai aptarsime atskirame straipsnyje.
  • Kiekviena kilpa skirta objekto kintamiesiems.
  • Nors atrodo, kad „Daryk ir daryk iki“ atrodo tas pats, paminėti būklę yra labai svarbu.
  • Kilpos yra labai svarbios sąvokos.

Įdomios straipsniai...