Exceli VBA silmused

Silmuseid saab pidada VBA kõige paremini toimivaks komponendiks ja neid võib pidada ka makrode südameks. Tavaliselt aitavad need teil vähendada koodide ridade arvu ja teevad tööd minutitega, mis võib inimesele tunde kuluda.

Igapäevases elus tuleb programmeerija ette selliseid juhtumeid, kus ta peab ikka ja jälle sama koodi kasutama. Seda nimetatakse silmuseks. Ilmselt annab sama koodi käivitamine iga kord sama tulemuse muutuja mõne murdosa muutusega. Loopimisel on palju eeliseid, kuid kõige olulisem on automatiseerimine. See aitab asju automatiseerida.

Kui te pole VBA skripti varem kasutanud, võite lihtsalt avada Exceli töövihiku ja vajutada klahvi Alt + F11 . See avab VBA projekti.

Läheme sügavamale sisemusse.

Oletame, et tahtsime ühe võttega printida 1–10 numbrit. Saame seda teha järgmise koodiga.

Kood:

 Sub loop1 () Debug.Print 1 Debug.Print 2 Debug.Print 3 Debug.Print 4 Debug.Print 5 Debug.Print 6 Debug.Print 7 Debug.Print 8 Debug.Print 9 Debug.Print 10 End Sub 

Kui saate koodi kiiresti läbi vaadata, olen lisanud üksuse Debug.Print ükshaaval, et printida numbrid 1 kuni 10. Pärast koodi käivitamist näeme väljundit kohe aknas. Kohese akna avamiseks vajutage Exceli kusagil Ctrl + G.

Käivitage kood F5-klahvi abil või käsitsi, nagu on näidatud alloleval ekraanipildil. Nii et kontrollime selle koodi väljundit.

VBA silmuste tüübid Excelis

Programmeerijana ei taha te kunagi kirjutada korduvaid ridu, mis annavad sama tulemuse. Te soovite seda automatiseerida. Siit näeme mitmesuguseid Exceli VBA silmuseid ja nende kasutamist mõne näite abil.

Tüüp 1 - VBA järgmise loopi jaoks

Järgmise VBA silmuse jaoks võimaldab meil silmuseid läbi lahtrite vahemiku teha ja sama ülesannet täita kõigi silmustes määratud lahtritega. Siin tuleb näidata algus- ja lõppnumber.

kood:

 Alamsilmus1 () i = 1 kuni 10 lahtri jaoks (i, 1) .Väärtus = i Järgmine i Lõpp Alam 

See kood annab täpselt sama väljundi kui eelmine. Selle koodeksi kõige tähelepanuväärsem asi on aga ridade arvu vähendamine. Oleme taandanud 12-realise koodi lihtsalt 5-realiseks koodiks.

Selles koodis on loop1 makro nimi. For silmuse alguseks on i = 1, see prindib Exceli lahtrisse i väärtuse (st 1) ja järgmisel korral läheb see uuesti for for loop algusesse ja paneb i = 2 printima i väärtuse (st 2). järgmises lahtris ja nii edasi, kuni kood jõuab viimase väärtuseni, st 10. Niipea kui kood jõuab viimase väärtuseni i (10), lõpeb kood iseenesest, kuna ühtegi täisarvu väärtust pole üle 10.

Käivitage kood F5-klahvi abil või käsitsi. Nii et näete väljundit nagu allpool.

Tüüp nr 2 - VBA Forward Stepi jaoks

Nagu olete näinud eelmises silmusnäites, oli mul tõus 1 sammu võrra suurem. Vaikimisi loetakse sammu väärtuseks VBA-s 1. Kas on siiski võimalik oma samm seada? Oletame, et soovite näha ainult paarisarvu vahemikus 1 kuni 20. Kuidas saab seda teha?

Nagu üldine matemaatika soovitab, peetakse numbreid, mis asuvad teineteisest 2 kaugusel (alustades esimesest paarisarvust 2), paarisarvudeks, eks?

Me rakendame sama loogikat. Vt allpool olevat koodi.

Kood:

 Sub ForwardStep () jaoks i = 2 kuni 20 2. sammu lahtrid (i, 1) .Väärtus = i Järgmine i Lõpp Sub 

Väärtuste korral, mis algavad alates 2, võimaldab see silmus printida järgmistes Exceli lahtrites 2, 4, 6, 8… 20. 2. etapp on selgesõnaliselt antud, nii et alates numbrist 2 hüpatakse kood sammuga 2 järgmise numbri juurde (st 4 trükitakse) ja nii edasi. Seda protsessi jätkatakse, kuni lahtris ilmub 20. Niipea kui 20 ilmub lahtrisse, lõpetatakse silmus automaatselt.

Käivitage kood F5-klahvi abil või käsitsi. Nii et näete väljundit nagu allpool.

Tüüp 3 - VBA tagasiulatuva sammuga silmuse jaoks

Sama moodi nagu edasi-tagasi astmega silmuse jaoks, saame kasutada ka tagurpidi sammuga silmuse jaoks. Näiteks mis juhtuks, kui seaksime tagurpidi sammu väärtuseks -2 ja kasutaksime a jaoks ahelat väärtustest 20 kuni 2?

Me näeme, kuidas see töötab.

kood:

 Sub BackwardStep () i = 20 kuni 2 sammu -2 silumiseks. Prindi i Next i End Sub 

Pärast koodi käivitamist näeme väljundit kohe aknas. Kohese akna avamiseks vajutage Exceli kusagil Ctrl + G.

Kuna oleme andnud etapi -2 jaoks silmuse lähtekohaks 20 ja lõpp-punktiks 2, algab silmus 20-st ja etapis -2 läheb see järgmisele numbrile, mis on -18 ja nii edasi. Niipea kui silmus jõuab väärtuseni 2, lõpetatakse see automaatselt ja viimane väärtus trükitakse väärtusega 2.

Tüüp nr 4 - VBA, mis on silmuse jaoks sisse pestud

Saame ka linkida theFori silmuse. Kuid sama silmuse pesemist ei soovitata teha rohkem kui kolm korda koodis (seda võib pidada loogikaveaks).

Silmuse pesastamiseks lugege allolevat koodi.

Kood:

 Sub NestedFor () i = 1 kuni 10 jaoks j = 1 kuni 2 lahtrit (i, j) .Väärtus = i * j Järgmine j Järgmine i Lõpp Sub 

Selles näites, kui väärtustel i = 1 ja j = 1, paigutab makro väärtus i * j (1 * 1) rea i = 1 ja veeru j = 1 (st lahtri A1) ristumiskohta ja läheb järgmisele väärtusele: j (2) hoides i = 1. Rea i = 1 ja veeru j = 2 (st lahtri B1) ristumiskohas sisestab makro väärtus I * j (1 * 2). Loop ignoreerib järgmist j väärtust, kuna j varieerub ainult vahemikus 1 kuni 2 ja läheb järgmisele i väärtusele.

Kui i = 2 ja j = 1, sisestab makro väärtus i * j (2 * 1) teise rea ja 1. veeru (st lahtri A2) ristmikku ja jätkub. Kuni i ja j vahemikuni.

Käivitage kood F5-klahvi abil või käsitsi, nagu on näidatud alloleval ekraanipildil. Nii et näete väljundit nagu allpool.

Tüüp nr 5 - VBA tehke, kui silmus

Tee, kuigi silmus on VBA üks huvitavamaid silmuseid. See võimaldab teil kontrollida tingimust ja kirjutada väljundi (DO), kui teatud tingimus või tingimuste komplekt on täidetud (või tingimus (t) on / on TÕESED).

Vaadake allolevat koodi:

Kood:

 Sub do_whileloop () Dim i täisarvuna i = 1 Teha, kui i <= 10 lahtrit (i, 1) .Väärtus = i * ii = i + 1 ahel Lõpp Sub 

See silmus töötab järgmiselt:

I väärtuste jaoks vahemikus 1 (i = 1 algselt) kuni 10, arvutab ta i * i (st iga i täisarvu ruutväärtuse) ja sisestab selle vastavalt lahtrisse 1-10. Väljund on kõike muud kui täisarvude 1 kuni 10 ruutväärtused. Vaadake lähemalt Loop-i selle koodi all. Selle lisamine on kohustuslik, vastasel korral tulistab süsteem tõrke.

Käivitage kood F5-klahvi abil või käsitsi. Nii et näete väljundit nagu allpool.

Need on mõned VBA-ahela näited, mida olen selles artiklis proovinud hoolitseda. Loodetavasti on see mõne mõiste mõistmiseks piisavalt täpne.

Asjad, mida meeles pidada

  • Tagasiulatuva sammuga silmuse kasutamisel veenduge, et teie algusnumber peaks olema suurem kui lõppnumber ja vastupidi.
  • Enne kogu VBA koodi lõpetamist veenduge jaotises Tehke silmuse all, et sulgemise ajal sulgete loopi. Vastasel juhul viskab süsteem kompilaatori tõrke veateatega “Do Without Loop”.

Selle VBA Loops Exceli malli saate alla laadida siit - VBA Loops Exceli mall

Soovitatavad artiklid

See on olnud Excel VBA Loops'i juhend. Siin arutasime Exceli VBA silmuste tüüpe ja nende kasutamist koos mõne praktilise näite ja allalaaditava excelimalliga. Võite vaadata ka meie teisi soovitatud artikleid -

  1. VBA funktsioon Excelis
  2. VBA VLOOKUP funktsioon
  3. Exceli kiirklahvid
  4. Exceli protsentuaalne valem

Kategooria: