„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
- „Kitas ciklas“
- Kiekvienai kilpai
- Darykite, kol kilpa
- 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.