Kas soovite korduvaid ülesandeid Excelis VBA abil automatiseerida? Siit saate teada, kuidas kasutada tsüklit For Every, et oma arvutustabelites andmeid tõhusalt töödelda.
Loop ja VBA käivad koos ja ka mõjuval põhjusel. Kui käsitlete Microsoft Office'i objekte, nagu töövihikud, töölehed ja vahemikud, võivad tsüklid aidata teil suhteliselt hõlpsalt nende vahel ümber lülituda.
Kuigi enam-vähem kõik VBA tsüklid töötavad hästi objektidega, on silmus "iga jaoks" üks parimaid võimalusi objektikogudega töötamiseks. Kui olete Exceli VBA uus kasutaja ja soovite iga tsükli jaoks selgeks saada, saate mõnest neist näidetest kiiresti õppida. Siin on kõik, mida peate selle olulise tsükli kohta teadma.
Iga tsükli süntaksi jaoks
Iga tsükli süntaks on üsna sarnane Excel VBA tavapärasele tsüklile. Siin on süntaks:
Iga muutuja_nimi jaoks objektikogus
[avaldus]
[avaldus]
[avaldus]
Järgmine muutuja_nimi
Silmus algab märksõnaga "igaühele"; võite kasutada mis tahes muutuja nime, millele järgneb objektikogu. Iga tsükli objektiks võivad olla lahtrid, vahemikud, lehed ja isegi töövihikud. Selline on selle silmuse ilu; see annab teile paindlikkuse erinevate Exceli kogudega töötamiseks.
Silmus liigub läbi iga koguväärtuse ja salvestab viite määratletud muutuja nimes. Pärast täitmist käivitab VBA tsüklis salvestatud laused ja liigub kogus järgmise objekti juurde ( järgmiseks märksõna on siin abiks). Mõistame koodi struktuuri põhinäite abil.
Kuidas kasutada iga tsükli jaoks Exceli VBA-s
Oletame, et soovite printida arvu lahtritesse A1 kuni A10. Parim viis on kasutada iga tsükli jaoks vahemiku funktsiooniga ja lasta koodil teha vajalik. Selle lihtsa ülesande saate teha järgmiselt.
- Avage VBA koodiredaktor, vajutades Alt + F11.
- Sisestage moodul, klõpsates nuppu Moodul valik sees Sisestage sakk.
- Looge alamrutiin, kasutades koodiredaktori mooduli aknas käsku sub(). Veenduge, et määrate alamprogrammile tähendusliku nime. Selle näite puhul võite kasutada nime iga_tsükli jaoks.
Nüüd, kui põhitõed on käest, on aeg hakata koodi kirjutama. Sisestage alamrutiini järgmised käsud:
Hämar rakk nagu ulatus
Iga raku jaoks sisse Lehed ("Leht1".Range("A1:A10")
lahter.väärtus = 10
Järgmine lahter
Kui kood käivitub, siis c muutuja salvestab A1 väärtuse. Järgmisena, kui ta liigub tsükli sees lause juurde, hindab see käsku ja sisestab määratletud lahtrisse, st lahtrisse A1, väärtuse 10.
Lõpuks, kui see liigub märksõnale Järgmine, liigub see järgmise väärtuse juurde, st lahtrisse A2. Silmus kulgeb, kuni see jõuab lahtrisse A10. See on lõplik väljund:
Silmuse kasutamine objektidega: lahtrid, lehed ja töövihikud
Excelil on kolm peamist objektitüüpi, millega te regulaarselt töötate. Need on lahtrid, lehed ja töövihikud. Siit saate teada, kuidas saate tsüklit kasutada kõigi kolme objektitüübiga.
Lahtrite ja silmustega koos töötamine
Oletame, et soovite lehel Sheet1 lahtrivahemikule lisada väärtuse ja mõned vormindamistingimused. Esimese sammuna peate määratlema tsükli tingimused ja seejärel vormindamiskäsud.
Sisestage alamrutiini järgmine kood.
Sub for_each_loop()
Hämar c Nagu Vahemik
Iga c In Sheets ("Leht1".Range("A1:A10")
Koos c
.Väärtus = 10
.Font. Värv = vbRed
.Font. Paksus = Tõsi
.Font. Läbikriipsutamine = Tõsi
LõppKoos
Järgmine c
Lõpp Sub
The koos funktsioon on kasulik mitme funktsiooni täitmisel ühe konkreetse objektiga. Kuna soovite muutujaga c täita ülesandeid, saate need kõik kombineerida, kasutades funktsiooni koos..end koos funktsiooniga.
Silmus võrdsustab c väärtuse iga lahtri väärtusega ja sisestab väärtuseks 10. Lisaks muudab see lahtri värvi punaseks, muudab väärtuse paksuks ja kriipsutab selle läbi. Kui see on kõik sammud lõpetanud, liigub see vahemiku järgmise määratletud väärtuse juurde.
Silmuse kasutamine lehtede juhtimiseks
Sarnaselt ülaltoodud näitele saate lehtede juhtimiseks kasutada iga silmuse jaoks nuppu. Kuidas oleks, kui muudaks VBA abil lehe Sheet1 nimeks Sheet3?
Olemasoleva töölehe Excelis VBA abil ümbernimetamiseks saate kasutada järgmist koodi.
Sub for_each_loop_sheets()
SestIgashtsisseSee töövihik.Lehed
Kui sht. Nimi = "Leht1" Siis
sht. Nimi = "leht3"
LõppKui
Järgmine sht
Lõpp Sub
Kood läbib töövihiku iga lehe ja kontrollib iga lehe nime. Kui see kohtab nime Sheet1, muudab see selle nimeks Sheet3. See edeneb töövihiku ülejäänud lehtede vahel, kui neid on. Kui koodi täitmine jõuab viimasele lehele, väljub see tsüklist ja alamrutiinist.
Mõne muu levinuma kasutuse hulgas saate seda teha liita mitu töölehte VBA abil ja värskendage sisu silmuste abil ühel lehel.
Lülitage tsükliga töövihikuid läbi
Lõpuks saate kasutada iga tsükli jaoks nuppu, et liikuda erinevate töövihikute vahel ja täita konkreetseid ülesandeid. Demonstreerime seda funktsiooni näitega.
VBA käskude abil saate lisada kolm uut töövihikut ja sulgeda kõik avatud töövihikud. Seda saate teha järgmiselt.
Sub loop_wrkbook()
Hämar tööraamat nagu töövihik
Töövihikud.Lisama
Töövihikud.Lisama
Töövihikud.Lisama
Iga töövihiku jaoks töövihikutes
tööraamat.Sulge
Järgmine tööraamat
Lõpp Sub
Ülaltoodud kood sulgeb ka teie makro töövihiku; veenduge, et olete oma koodid enne selle koodi käivitamist salvestanud.
Kuna silmustel on mitu kasutust, saate ka seda teha koondada mitme töövihiku andmed ühte töövihikusse.
Pesastatud IF-lause kasutamine koos tsükliga
Nagu ülaltoodud näites, saate konkreetsete tingimuste kontrollimiseks kasutada tsüklis IF-lauset. Muudame lahtri taustavärvi lahtri väärtuste alusel.
Lahtrites A1:A20 on mõned juhuslikud numbrid. Saate kirjutada tsükli, et liikuda läbi vahemiku iga antud lahtri; kui lahtri väärtus on väiksem kui 10, peaks lahtri värv muutuma punaseks. Kui lahtri väärtus ületab 10, peaks see muutuma roheliseks. Kasutage selleks järgmist koodi:
Alamsilmus_w_if()
Hämar c Nagu Vahemik
Iga c In Sheets ("Leht4".Range("A1:A20")
Kuic.Väärtus < 10 Siis
c. Interjöör. ColorIndex = 3
Muidu: c. Interjöör. Värviindeks = 4
LõppKui
Järgmine c
Lõpp Sub
Väljund näeb välja selline:
Silmuste kasutamine Exceli VBA-s
Exceli VBA ei piirdu ainult iga tsükli jaoks. Seal on palju kasulikke silmuseid, mis võimaldavad teil erinevaid funktsioone hõlpsalt täita. Jätke hüvasti igapäevaste käsitsi tehtavate ülesannetega, kuna VBA tsüklid nagu for-silmus, tehke samal ajal ja tehke seni, kuni silmused teie elu lihtsamaks muudavad.