VBA Vaikka silmukka

VBA Vaikka Loop on tärkeä ja tehokas konsepti, jonka olet ehkä nähnyt useimmissa ohjelmointikielissä. Jos hallitset tämän käsitteen VBA: lla, pystyt valmistamaan tehokkaita skriptejä, jotka toimivat laskentataulukkotietojen kanssa täysin erilaisilla ja kätevillä tavoilla. Valmistaudu tässä artikkelissa tutkimaan erilaisten silmukoiden maailmaa sekä monia esimerkkejä, jotka tulevat apuasi.

While-silmukan tarkoitus on toistaa tietty lauseiden lohko edellyttäen, että ehto täyttyy. Tarkemmin sanottuna silmukka toistaa vastaavan lauseen, kun taas ehto on tosi. Kun ehto tulee vääriksi (ei täyty), silmukka päättyy.

Microsoft Excel VBA: ssa on periaatteessa kahta tyyppiä silmukkaa:

  • VBA kun taas Wend-silmukka
  • VBA: n tekemä silmukka

VBA While-Wend -silmukka on olemassa koodin tekemiseksi yhteensopivaksi koodien vanhempien versioiden kanssa. VBA Do-While on while-silmukan päivitetty versio, joka on joustavampi ja jäsenneltympi verrattuna edelliseen ja jota Microsoft-yhteisö suosittelee käytettäväksi.

Vain jos haluat miettiä, mitä Wend tarkoittaa, se on lyhytaikainen muoto End Endistä ja toimii samalla tavalla.

Esimerkkejä VBA: n silmukasta

Sukellaan syvälle erityyppisten VBA While Loops -ohjeiden vaihe vaiheelta -oppaaseen.

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

Esimerkki # 1

VBA kun taas Wend-silmukka

Syntaksi:

Otetaan esimerkki nähdäksemme tämän paremmin.

  • Määritä aliproseduuri makron luomiseksi uudelle moduulille.

Koodi:

 Sub WhileEx1 () lopussa Sub 

  • Aseta kaksi muuttujaa Numero yhdeksi ja Summa nollaksi.

Koodi:

 Sub WhileEx1 () -luku = 1 Summa = 0 End Sub 

  • Aseta hetkinen ehto numeromuuttujalle.

Koodi:

 Sub WhileEx1 () -luku = 1 Summa = 0 Kun luku <= 10 Loppu ala-alaan 

  • Lisää tälle ehtoksi suoritettavat lausunnot.

Koodi:

 Sub WhileEx1 () -luku = 1 Summa = 0 Vaikka luku <= 10 Summa = Summa + Lukumäärä = Luku + 1 Loppu Sub 

  • Lisää Debug.Print Sum, jotta 10 ensimmäisen luonnollisen numeron summa voidaan tulostaa yksi kerrallaan välittömässä ikkunassa.

Koodi:

 Sub WhileEx1 () Lukumäärä = 1 Summa = 0 Kun Luku <= 10 Summa = Summa + Lukumäärä = Numero + 1 Debug.Print Sum End Sub 

  • Lopuksi lopeta kun taas silmukka Wend-lauseella.

Koodi:

 Sub WhileEx1 () Lukumäärä = 1 Summa = 0 Kun Luku <= 10 Summa = Summa + Lukumäärä = Numero + 1 Debug.Print Sum Wend End Sub 

  • Hit F5 tai Run Button suorittaaksesi tämän koodin ja nähdä tulosteen.

Tässä koodissa summamuuttuja asetetaan nollaan. Joten joka kerta numeroa kasvatetaan yhdellä, kunnes se saavuttaa 10 (silmukan ollessa käytössä), summamuuttuja lisää edellisen summan nykyisellä numerolla ja näyttää sen välittömän ikkunan alla riviltä riviltä tai portaittain.

Esimerkki 2

VBA: n tekemä silmukka

Tee-kun-silmukka Kun kunto tarkistetaan ennen silmukan alkamista

On olemassa kaksi tapaa, joilla silmukka voidaan suorittaa.

  • Voit lisätä ehdon ennen silmukan alkamista (Se on sama kuin kun taas Wend-silmukka). Tässä ei olisi silmukan toistoa, jos ehto epäonnistuu ensimmäistä kertaa.
  • Voit lisätä ehdon tarkistettavan silmukan viimeiseen osaan. Tässä tapauksessa tapahtuu ainakin yksi silmukan iterointi ennen kuin ehto epäonnistuu.

Syntaksi:

Otetaan yksi esimerkki asioiden selkeyttämiseksi.

  • Aseta uusi moduuli ja määritä uusi aliproseduuri makron määrittelemiseksi.

Koodi:

 Sub kunEex () loppu Sub 

  • Määritä uusi muuttuja I kokonaislukuna. Ja aloita sen arvo yhdeksi.

Koodi:

 Sub kunEex () Dim i Dim Kokonaisluku i = 1 End Sub 

  • Käytä Tehtävä -toimintoa lisätäksesi ehdon silmukan alkuun.

Koodi:

 Sub WhileEx2 () Dim i Dim Kokonaisluku i = 1 Tee kun i <= 10 End Sub 

  • Lisää suoritettavat lauseet, kunhan ehto on totta. Lisää alla oleva koodirivi makroon.

Koodi:

 Sub WhileEx2 () Dim i Dim Kokonaisluku i = 1 Tee kun i <= 10 solua (i, 1) .Arvo = i * i End Sub 

Tämä lausunto sallii ensimmäisen sarakkeen kymmenennen rivin tallentaa numeroiden neliöarvot.

  • Lisää vielä yksi lause, joka sallii i: n lisäyksen 1: llä silmukan jokaisessa iteraatiossa.

Koodi:

 Sub WhileEx2 () Dim i Dim Kokonaisluku i = 1 Tee kun i <= 10 solua (i, 1) .Value = i * ii = i + 1 Loop End Sub 

  • Suorita tämä silmukka lisäämällä Loop-käsky koodin loppuun.

Katsotaanpa tämän koodin kiertotapa:

I: n arvoille 1 (i = 1 alun perin) - 10, se laskee i * i (eli neliöarvon jokaiselle i: n kokonaislukuarvolle) ja syöttää sen sarakkeen 1 (ts. Sarake A) rivien 1-10 alle. . Tulos ei ole muuta kuin kokonaislukujen 1 - 10 neliöarvot.

  • Suorita tämä koodi napsauttamalla F5 tai Suorita-painiketta ja katso lähtö.

Näet luonnollisten lukujen 1 - 10 neliöarvot, jotka tallennetaan jokaisessa solussa erikseen sarakkeessa A.

Esimerkki 3

Tee-kun-silmukka kun ehto on valittu silmukan lopussa

Syntaksi:

Katsotaan esimerkki nähdäksesi silmukka paremmin.

  • Aseta uusi moduuli ja määritä uusi aliproseduuri makron tallentamiseksi.

Koodi:

 Sub WhileEx3 () lopussa Sub 

  • Määritä uusi kokonaisluku i kuten edellisessä esimerkissä ja määritä sille aloitusarvo.

Koodi:

 Sub WhileEx3 () Dim i Dim Kokonaisluku i = 1 Loppu Sub 

  • Käytä Tee-ehtoa lisätäksesi suoritettavia lauseita niin kauan kuin ehto on totta.

Koodi:

 Sub WhileEx3 () Dim i Dim Kokonaisluku i = 1 Tee solut (i, 2) .Arvo = i * ii = i + 1 End Sub 

On suositeltavaa käyttää välilyöntiä (Tab-näppäin) yllä olevassa koodissa näytetyn sisennyksenä, joka sallii koodin sujuvan toiminnan ja määrittelee koodille myös hyvän rakennemuodon.

  • Käytä Loop-painiketta lisätäksesi ehto, joka tarkistetaan jokaiselle käskylle, jotta se voidaan suorittaa.

Koodi:

 Sub WhileEx3 () Dim i Dim Kokonaisluku i = 1 Tee solut (i, 2) .Arvo = i * ii = i + 1 silmukka kun i <= 10 End Sub 

  • Suorita tämä koodi napsauttamalla F5 tai Suorita-painiketta manuaalisesti ja katso lähtö.

Näet tulosteen yllä olevan kuvan osoittamalla tavalla.

Kuinka tämä koodi toimii taustassa?

Järjestelmä kertoo i: n arvon (alkaen 1) itselleen ja tallentaa jokaiselle riville toiseen sarakkeeseen (Solut (i, 2)). Koodi lopettaa suorittamisen heti, kun muuttujan i arvo saavuttaa 10. Lähtö saattaa olla sama, mikä tarkoittaa loogisesti, että molemmat koodit toimivat samoina. Mutta suurin ero on koodin kääntämisessä. Viimeisessä esimerkissä tila oli jo olemassa, ja järjestelmä tiesi, mihin numeroon sen on mentävä. Tässä koodissa järjestelmä ei kuitenkaan tiedä ehtoa lauseiden suorittamishetkellä ja suorittaa iteroinnin yksi kerrallaan. Niin kauan kuin ehto on väärä, koodi lopetti suorittamisen.

Muistettavat VBA Loop

  • While-Wend-silmukka on vanhentunut ja on vain yhteensopiva vanhempien versioiden kanssa. Sinun tulisi käyttää Do-While-silmukkaa sen sijaan.
  • Do-While-silmukka on joustavampi ja hyvin jäsennelty verrattuna Both-Wend -silmukkaan.
  • Do-while-silmukkaa voidaan käyttää kahdella tavalla, jolloin yhteen tapaan voit lisätä ensin tarkistettavan ehdon ja sitten lisätä ehdot, jotka täyttävät ehdon. Toisella tavalla voit lisätä ensin lauseita ja myöhemmin lisätä tarkistettavan ehdon.
  • Leikkauksia suositellaan käytettäväksi silmukoissa, jotta koodi olisi dynaamisempi ja helpompi lukea.

Suositellut artikkelit

Tämä on opas VBA: n Do As Loop -sivulle. Tässä keskustelimme siitä, miten Excel VBA Do While Loop -sovellusta voidaan käyttää, sekä joitain käytännöllisiä esimerkkejä ja ladattavaa Excel-mallia. Voit myös käydä läpi muiden ehdottamiemme artikkeleidemme -

  1. Kuinka käyttää FIND-toimintoa Excelissä?
  2. Kuinka käyttää VBA TRIM -toimintoa?
  3. VBA-ryhmät | Täydellinen opetusohjelma
  4. Kuinka käyttää VBA Select -tapausta?

Luokka: