Norite automatizuoti pasikartojančias užduotis programoje „Excel“ naudodami VBA? Sužinokite, kaip naudoti ciklą „Kiekvienam“, kad galėtumėte efektyviai valdyti duomenis skaičiuoklėse.
Kilpos ir VBA dera kartu ir dėl geros priežasties. Kai dirbate su „Microsoft Office“ objektais, pvz., darbaknygėmis, darbalapiais ir diapazonais, kilpos gali padėti palyginti lengvai perjungti kiekvieną iš jų.
Nors daugiau ar mažiau visos VBA kilpos puikiai veikia su objektais, ciklas „kiekvienam“ yra vienas geriausių variantų dirbant su objektų kolekcijomis. Jei pirmą kartą naudojate „Excel VBA“ ir norite išmokti kiekvienos kilpos, galite greitai pasimokyti iš kai kurių iš šių pavyzdžių. Štai viskas, ką reikia žinoti apie šią esminę kilpą.
Kiekvienos kilpos sintaksei
Kiekvienos kilpos sintaksė yra gana panaši į įprastą ciklo „Excel VBA“. Štai sintaksė:
Kiekvienam kintamojo_pavadinimui objekto_rinkinyje
[pareiškimas]
[pareiškimas]
[pareiškimas]
Kitas kintamojo_pavadinimas
Ciklas prasideda raktiniu žodžiu „už kiekvieną“; galite naudoti bet kurį kintamojo pavadinimą, po kurio nurodoma objektų kolekcija. Kiekvienos kilpos objektas gali būti langeliai, diapazonai, lapai ir net darbaknygės. Toks yra šios kilpos grožis; tai suteikia jums lankstumo dirbant su įvairiomis „Excel“ kolekcijomis.
Ciklas perkelia kiekvieną rinkinio reikšmę ir išsaugo nuorodą apibrėžtame kintamojo pavadinime. Po vykdymo VBA įvykdo cikle išsaugotus sakinius ir pereina prie kito objekto kolekcijoje ( Kitas čia naudingas raktinis žodis). Supraskime kodo struktūrą naudodami pagrindinį pavyzdį.
Kaip naudoti „For Every Loop“ programoje „Excel VBA“.
Tarkime, kad norite atspausdinti skaičių langeliuose nuo A1 iki A10. Geriausias būdas yra naudoti kiekvienai kilpai su diapazono funkcija ir leisti kodui atlikti tai, ko reikia. Štai kaip galite atlikti šią paprastą užduotį:
- Atidarykite VBA kodo rengyklę paspausdami Alt + F11.
- Įdėkite modulį spustelėdami Modulis parinktis viduje Įdėti skirtuką.
- Sukurkite antrinę programą naudodami komandą sub() kodo rengyklės modulio lange. Įsitikinkite, kad paprogramei priskyrėte prasmingą pavadinimą. Šiame pavyzdyje galite naudoti pavadinimą for_each_loop.
Dabar, kai nebeliko pagrindų, laikas pradėti rašyti kodą. Paprogramėje įveskite šias komandas:
Pritemdyta ląstelė kaip diapazonas
Kiekvienai ląstelei in Lakštai („1 lapas“).Diapazonas("A1:A10")
langelis.reikšmė = 10
Kita ląstelė
Kai kodas vykdomas, c kintamasis išsaugos A1 reikšmę. Toliau, pereidamas prie teiginio ciklo viduje, jis įvertina komandą ir įveda 10 reikšmę apibrėžtame langelyje, ty langelyje A1.
Galiausiai, kai jis pereina prie kito raktinio žodžio, jis pereina į kitą reikšmę, ty langelį A2. Ciklas tęsiasi tol, kol pasiekia langelį A10. Tai yra galutinis rezultatas:
Ciklo naudojimas su objektais: langeliais, lapais ir darbaknygėmis
„Excel“ turi tris pagrindinius objektų tipus, su kuriais dirbate reguliariai. Tai langeliai, lapai ir darbaknygės. Štai kaip galite naudoti kilpą su visais trimis objektų tipais.
Darbas su ląstelėmis ir kilpomis kartu
Tarkime, kad 1 lapo langelių diapazonui norite pridėti reikšmę ir kai kurias formatavimo sąlygas. Pirmiausia turite apibrėžti ciklo sąlygas, o po to – formatavimo komandas.
Įveskite šį kodą paprogramėje.
Sub for_each_loop()
Tamsus c Kaip diapazonas
Kiekvienam c In Sheets („1 lapas“).Diapazonas("A1:A10")
Su c
.Vertė = 10
.Šriftas. Spalva = vbRed
.Šriftas. Paryškintas = Tiesa
.Šriftas. Perbraukta = Tiesa
GalasSu
Kitas c
Galas Sub
The su funkcija naudinga atliekant kelias funkcijas su vienu konkrečiu objektu. Kadangi norite atlikti keletą užduočių su kintamuoju c, galite jas visas sujungti naudodami funkciją su..end su funkcija.
Ciklas sulygina c reikšmę su kiekviena langelio reikšme ir įveda reikšmę kaip 10. Be to, ji pakeičia langelio spalvą į raudoną, paryškina reikšmę ir perbraukia. Atlikus visus veiksmus, jis pereina prie kitos apibrėžtos vertės diapazone.
Ciklo naudojimas lapams valdyti
Panašiai kaip ir aukščiau pateiktame pavyzdyje, galite naudoti kiekvienos kilpos valdymą lapams. Kaip pakeisti lapo 1 pavadinimą į Sheet3 naudojant VBA?
Norėdami pervardyti esamą darbalapį programoje „Excel“, naudodami VBA, galite naudoti šį kodą:
Sub for_each_loop_sheets()
DėlKiekvienasshtĮŠi Darbo knyga.Paklodės
Jei sht. Vardas = „1 lapas“ Tada
sht. Vardas = "3 lapas"
GalasJeigu
Kitas sht
Galas Sub
Kodas pereina kiekvieną darbaknygės lapą ir patikrina kiekvieno lapo pavadinimą. Jei jis susiduria su pavadinimu Sheet1, jis pakeičia jį į Sheet3. Jis eina per likusius darbaknygės lapus, jei tokių yra. Kai kodo vykdymas pasiekia paskutinį lapą, jis išeina iš ciklo ir paprogramės.
Be kai kurių kitų įprastų naudojimo būdų, galite sujungti kelis darbalapius naudojant VBA ir atnaujinkite turinį viename lape naudodami kilpas.
Perjungti darbaknyges naudodami kilpą
Galiausiai galite naudoti kiekvienos kilpos mygtuką, kad perjungtumėte skirtingas darbaknyges ir atliktumėte konkrečias užduotis. Parodykime šią funkciją pavyzdžiu.
Naudodami VBA komandas galite pridėti tris naujas darbaknyges ir kartu uždaryti visas atidarytas darbaknyges. Štai kaip tai galite padaryti:
Sub loop_wrkbook()
Neryški darbo knyga kaip darbo knyga
Darbo knygelės.Papildyti
Darbo knygelės.Papildyti
Darbo knygelės.Papildyti
Kiekvienai darbo knygai darbaknygėse
darbo knyga.Uždaryti
Kita darbo knyga
Galas Sub
Aukščiau pateiktas kodas taip pat uždarys jūsų makrokomandos darbaknygę; prieš paleisdami šį kodą įsitikinkite, kad išsaugojote kodus.
Kadangi kilpos turi keletą naudojimo būdų, taip pat galite konsoliduoti duomenis iš kelių darbaknygių į vieną darbaknygę.
Įdėto IF teiginio naudojimas su ciklu
Kaip ir aukščiau pateiktame pavyzdyje, cikle galite naudoti IF teiginį, kad patikrintumėte konkrečias sąlygas. Pakeiskime langelio fono spalvą pagal langelio reikšmes.
A1:A20 langeliuose yra keli atsitiktiniai skaičiai. Galite parašyti kilpą, kad pereitumėte per kiekvieną nurodytą diapazono langelį; jei langelio reikšmė mažesnė nei 10, langelio spalva turėtų pasikeisti į raudoną. Jei langelio reikšmė viršija 10, ji turėtų pasidaryti žalia. Šiuo tikslu naudokite šį kodą:
Sub loop_w_if()
Tamsus c Kaip diapazonas
Kiekvienam c In Sheets ("4 lapas").Diapazonas("A1:A20")
Jeiguc.Vertė < 10 Tada
c. Interjeras. ColorIndex = 3
Kitas: c. Interjeras. ColorIndex = 4
GalasJeigu
Kitas c
Galas Sub
Štai kaip atrodo išvestis:
Ciklų naudojimas programoje Excel VBA
„Excel VBA“ neapsiriboja tik kiekvienos kilpos. Yra daugybė naudingų kilpų, kurios leidžia lengvai atlikti įvairias funkcijas. Atsisveikinkite su kasdienėmis rankomis atliekamomis užduotimis, nes VBA kilpos, pavyzdžiui, for ciklas, darykite, kol ir darykite tol, kol įsijungia kilpos, kad palengvintumėte jūsų gyvenimą.