Excel VBA -silmukat

Silmukoita voidaan pitää VBA: n parhaiten toimivana komponenttina ja niitä voidaan pitää myös makrojen ytimenä. Ne auttavat yleensä vähentämään koodisi rivien määrää ja tekemään työtä minuutteina, mikä voi viedä tunteja ihmiselle.

Päivittäisessä elämässä ohjelmoija keksii sellaisia ​​tapauksia, joissa hänen on suoritettava sama koodisarja uudestaan ​​ja uudestaan. Sitä kutsutaan silmukointi. On selvää, että joka kerta saman koodin suorittaminen antaa suunnilleen saman tuloksen muuttujan osittaisella muutoksella. Silmukoinnilla on suuri joukko etuja, mutta tärkein kaikista on automaatio. Se auttaa automatisoimaan tavaraa.

Jos et ole vielä käyttänyt VBA-skriptiä, voit avata Excel-työkirjan ja painaa Alt + F11 . Se avaa VBA-projektin.

Mennään syvemmälle sisälle.

Oletetaan, että halusimme tulostaa yhdestä otoksesta 1-10 numeroa. Voimme tehdä sen seuraavalla koodilla.

Koodi:

 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 

Jos pääset koodin läpi nopeasti, olen lisännyt Debug.Print-tulosteen yksitellen numeroiden 1-10 tulostamiseksi. Koodin suorittamisen jälkeen näemme tulosteen välittömässä ikkunassa. Voit avata välittömän ikkunan painamalla Ctrl + G missä tahansa Excelissä.

Suorita koodi F5-näppäimellä tai manuaalisesti alla olevan kuvakaappauksen osoittamalla tavalla. Joten tarkistetaan tämän koodin lähtö.

Tyypit VBA-silmukoita Excelissä

Ohjelmoijana et koskaan halua kirjoittaa toistuvia rivejä, jotka aikovat antaa saman tuloksen. Haluat automatisoida sen. Siksi näemme erilaisia ​​Excel VBA -silmukoita ja kuinka niitä käyttää joitain esimerkkejä käyttämällä.

Tyyppi 1 - VBA seuraavalle silmukalle

Seuraavaksi VBA-silmukka antaa meille mahdollisuuden silmukkaa solualueen läpi ja suorittaa sama tehtävä jokaiselle silmukassa määritellylle solulle. Alku- ja lopetusnumero on ilmoitettava tässä.

koodi:

 Sub loop1 () i = 1 - 10 solulle (i, 1) .Arvo = i Seuraava i End Sub 

Tämä koodi antaa täsmälleen saman tuotoksen kuin edellinen. Huomattavin asia tässä koodissa on kuitenkin rivien vähentäminen. Olemme vähentäneet 12-rivisen koodin vain 5-riviseksi koodiksi.

Tässä koodissa loop1 on makron nimi. For-silmukka alkaa i = 1, se tulostaa i: n arvon (ts. 1) excel-soluun ja seuraavassa se siirtyy jälleen for for-silmukan alkuun ja saa i = 2: n tulostamaan arvon i (ts. 2). seuraavassa solussa ja niin edelleen, kunnes koodi saavuttaa viimeisimmän arvonsa eli 10. Heti kun koodi saavuttaa viimeisen arvon i (10), koodi loppuu itseensä, koska mitään kokonaislukua ei ole saatavana yli 10.

Suorita koodi F5-näppäimellä tai manuaalisesti. Joten voit nähdä tulosteen alla.

Tyyppi 2 - VBA eteenpäin suunnatulle silmukalle

Kuten olette nähneet edellisessä silmukka-esimerkissä, minulla oli nousu yhdessä vaiheessa. Oletusarvon mukaan askelarvona pidetään VBA: n arvoa 1. Onko kuitenkin mahdollista asettaa oma askel? Oletetaan, että haluat nähdä vain parilliset numerot välillä 1 - 20. Kuinka se voidaan tehdä?

Kuten yleinen matematiikka ehdottaa, numeroita, jotka ovat etäisyydellä 2 toisistaan ​​(Alkaen ensimmäisestä parillisesta numerosta 2), pidetään parillisina lukuina, eikö niin?

Käytämme samaa logiikkaa. Katso viite alla olevasta koodista.

Koodi:

 Sub ForwardStep () Jos i = 2 - 20 Vaihe 2 solut (i, 1) .Arvo = i Seuraava i Loppu Sub 

Arvoille, jotka alkavat 2: sta, tämä silmukka mahdollistaa tulostamisen 2, 4, 6, 8… 20 seuraavissa excel-soluissa. Vaihe 2 on nimenomaisesti annettu siten, että luvusta 2 alkaen koodi siirtyy seuraavaan numeroon vaiheella 2 (ts. 4 tulostetaan) ja niin edelleen. Tämä prosessi jatkuu, kunnes solussa tapahtuu 20. Heti kun 20 tapahtuu solussa, silmukka lopetetaan automaattisesti.

Suorita koodi F5-näppäimellä tai manuaalisesti. Joten voit nähdä tulosteen alla.

Tyyppi 3 - VBA taaksepäin suunnatulle silmukalle

Samaa tapaa kuin eteenpäin suunnatulla silmukalla, voidaan käyttää taaksepäin askelmalle. Entä esimerkiksi jos asetamme taaksepäin askeleemme -2: ksi ja suoritamme a-silmukan arvoista 20 - 2?

Näemme miten se toimii.

koodi:

 Sub BackwardStep () Jos i = 20 - 2 Vaihe -2 Debug.Print i Seuraava i End Sub 

Koodin suorittamisen jälkeen nähdään lähtö välittömässä ikkunassa. Voit avata välittömän ikkunan painamalla Ctrl + G missä tahansa Excelissä.

Koska olemme antaneet silmukan aloituspisteeksi 20 ja lopetuspisteeksi 2 vaiheella -2, silmukka alkaa luvusta 20 ja vaiheessa -2 se jatkuu seuraavaan numeroon, joka on -18 ja niin edelleen. Heti kun silmukka saavuttaa arvon 2, se päättyy automaattisesti ja viimeinen arvo tulostetaan nimellä 2.

Tyyppi 4 - VBA, sisäkkäin silmukkaa varten

Voimme myös pesätä theFor-silmukan. Saman silmukan pesää ei kuitenkaan suositella tekevän enemmän kuin kolme kertaa koodissa (Sitä voidaan pitää logiikan virheenä).

Katso alla oleva sisäkkäisten silmukoiden koodi.

Koodi:

 Sub NestedFor () Jos i = 1 - 10 Jos j = 1 - 2 solua (i, j) .Arvo = i * j Seuraava j Seuraava i Loppu Sub 

Tässä esimerkissä arvoilla i = 1 ja j = 1 makro asettaa arvon i * j (1 * 1) rivin i = 1 ja sarakkeen j = 1 (ts. Solu A1) leikkauskohtaan ja menee seuraavan arvon j (2) pitämällä i = 1. Rivin i = 1 ja sarakkeen j = 2 (ts. solu B1) leikkauspisteeseen makro syöttää arvon I * j (1 * 2). Silmukka jättää huomioimatta j: n seuraavan arvon, koska j vaihtelee vain välillä 1 - 2 ja siirtyy seuraavalle i: n arvolle.

Jos i = 2 ja j = 1, makro syöttää arvon i * j (2 * 1) toisen rivin ja ensimmäisen sarakkeen (ts. Solu A2) leikkauspisteeseen ja jatkaa. Kunnes alueisiin i ja j.

Suorita koodi F5-näppäimellä tai manuaalisesti alla olevan kuvakaappauksen osoittamalla tavalla. Joten voit nähdä tulosteen alla.

Tyyppi 5 - VBA Tee silmukka

Tee vaikka silmukka on yksi mielenkiintoisimmista silmukoista VBA: ssa. Sen avulla voit tarkistaa ehdon ja kirjoittaa ulostulon (DO), kun tietty ehto tai ehtojen joukko täyttyy (tai ehto (t) ovat / ovat Tosi).

Katso alla oleva koodi:

Koodi:

 Sub do_whileloop () Dim i Kuten kokonaisluku i = 1 Tee kun i <= 10 solua (i, 1) .Arvo = i * ii = i + 1 Loop End Sub 

Tämä silmukka toimii seuraavasti:

I: n arvoille 1 (i = 1 alun perin) - 10, se laskee, i * i (eli neliöarvon jokaiselle i: n kokonaislukuarvolle) ja syöttää sen vastaavasti soluun 1-10. Tulos ei ole muuta kuin kokonaislukujen 1 - 10 neliöarvot. Katso tarkemmin Loop- koodia tämän koodin alla. Lisäys on pakollista, muuten järjestelmä ampuu virheen.

Suorita koodi F5-näppäimellä tai manuaalisesti. Joten voit nähdä tulosteen alla.

Nämä ovat joitain esimerkkejä VBA-silmukoista, joista olen yrittänyt huolehtia tässä artikkelissa. Toivottavasti se on riittävän tarkka joidenkin käsitteiden poistamiseksi.

Muistettavat asiat

  • Kun käytät silmukkaa taaksepäin askelmalla, varmista, että aloitusnumerosi on oltava suurempi kuin lopetusnumerosi ja päinvastoin.
  • Varmista kohdasta Tee silmukan aikana, että käytät Loop-sovellusta sulkeaksesi tekemisen ennen koko VBA-koodin lopettamista. Muutoin järjestelmä heittää kääntäjävirheen virheilmoituksella “Do Without Loop”.

Voit ladata tämän VBA Loops Excel -mallin täältä - VBA Loops Excel Template

Suositellut artikkelit

Tämä on opas Excel VBA -silmukoihin. Tässä keskustelimme Excel VBA -silmukoiden tyypeistä ja niiden käytöstä sekä joitain käytännöllisiä esimerkkejä ja ladattavaa Excel-mallia. Voit myös käydä läpi muiden ehdottamiemme artikkeleidemme -

  1. VBA-toiminto Excelissä
  2. VBA VLOOKUP -toiminto
  3. Excel-pikanäppäimet
  4. Excel-prosenttikaava

Luokka: