7 Esimerkkejä silmukoista Microsoft Excel VBA: ssa

Anonim

Jos kirjoitat VBA -ohjelmaa ja haluat suorittaa saman tehtävän useita kertoja, voit tehdä tämän käyttämällä VBA silmukoille. VBA on peräkkäinen ohjelmointikieli. Jokainen koodirivi suoritetaan ylhäältä alas, kunnes lukukoodeja ei enää ole. Jos haluat palata ja suorittaa tehtävän, sinun on pakotettava se käyttämällä makrokoodia. Silmukalla saat tuloksia.

For Loop in VBA on yksi yleisimmistä silmukkatyypeistä. For -silmukalla on kaksi muotoa: For Next ja For For In Next. For -silmukkaa käytetään tyypillisesti siirtymään peräkkäin kohdeluettelossa. Lopeta For -silmukka missä tahansa kohdassa, voimme käyttää exit -lauseketta. Loop kiertää kierroksen, kunnes se täyttää lopullisen ehdon. Kun loppuehto täyttyy, ohjelmointivirta jatkuu alaspäin luonnollisessa suunnassaan.

For… Next -silmukalla on seuraava syntaksi: Laskurille = start_counter To end_counter 'Tee jotain täällä (koodisi) Seuraava laskuri 

Olemme itse luomassa silmukkaa, joka käyttää muuttujaa laskuri silmukan "ajan pitäjänä". Asetimme sen arvoon, joka on yhtä suuri kuin start_counter silmukan alussa ja lisää sitten sitä yhdellä silmukalla jokaisen silmukan aikana, kunnes se täyttää lopullisen ehdon. Silmukka suoritetaan kunnes arvo on laskuri tulee tasavertaiseksi end_counter. Silmukka suoritetaan viimeisen kerran, kun molemmat yllä olevat arvot vastaavat toisiaan ja sitten silmukka pysähtyy.

Kaikki edellä mainitut saattavat olla hämmentäviä joillekin ihmisille, joten valmistaudumme ja aloitamme For Loopin oppimisen excelissä muutamalla esimerkillä.

  • Luo uusi Excel -työkirja ja tallenna se laajennuksella .xlsm
  • Käynnistä Visual Basic -editorinäyttö painamalla ALT + F11
  • Lisää uusi moduuli
  • Kopioi alla oleva koodi VB -standardimoduuliin

Silmukka 1 (Näytetään numero viestiviestin kanssa)

Alasilmukka1 () Dim StartNumber kokonaislukuna Dim EndNumber kokonaisluvuna EndNumber = 5 For StartNumber = 1 To EndNumber MsgBox StartNumber & "is" & "Your StartNumber" Next StartNumber End Sub 

Koodin selitys:

  • VBA -koodi edellyttää, että annat arvon StartNumber -arvoon, jossa EndNumber ovat muuttujia, jotka ilmoitetaan kokonaislukuna silmukkasi lähtökohtana
  • Nämä arvot voivat olla mitä tahansa lukuja ja EndNumber on 5
  • StartNumber alkaa 1
  • StartNumber = 1 to EndNumber tarkoittaa, että koodi alkaa 1 (StartNumber) - 5 (EndNumber)
  • MsgBox StartNumber & "on" & "Your StartNumber" näyttää seuraavan viestiruudun

Loop2 (täyttöarvot)

Alasilmukka2 () 'Täyttää solut A1: A56 X: n arvoilla silmukoimalla' --- Kommentti 'Lisää X: n arvoa 1 jokaisessa silmukassa' --- Kommentti Dim X kokonaislukuna X = 1-56 Alue ("A "& X). Arvo = X Seuraava X Loppuosa 

Koodin selitys:

  • Olemme määrittäneet X: n kokonaislukuna
  • X = 1-56; tämä alkaa yhdellä ja jatkuu vuoteen 56 aina 1 askeleen välein
  • Alue ("A" & X) .Arvo = X; tämä rivi tallentaa arvon X ja siirtyy alueelle A1 - A56

Loop3 (Täytä solut taustavärillä)

Sub Loop3 () 'Täyttää solut B1: B56 56 taustavärillä' --- Kommentti Dim X kokonaislukuna X = 1-56 ("B" & X) .Valitse Selection.Interior .ColorIndex = X .Pattern = xlSolid End With Next X End Sub 

Koodin selitys:

  • Olemme määrittäneet X: n kokonaislukuna
  • Jos X = 1-56, se alkaa 1: llä ja jatkuu aina 56 asti 1: n lisäyksellä joka kerta
  • Alue ("B" & X) .Valitse; tämä rivi tallentaa arvon X ja valitse solun B1 - B56
  • Seuraavat 4 riviä eli With Selection.Interior valitsee sisätilojen väriindeksin ja ottaa kyseisen väriindeksin arvon X siten, että 1 kuuluu mustaan ​​väriin; 2 kuuluu väriin valkoinen; 3 punaiselle ja niin edelleen

Silmukka 4 (Täytä arvot 2: n lisäyksellä)

Oletusarvoisesti Askel -arvo on eteenpäin 1, mutta se voidaan asettaa numeroksi, joka on suurempi kuin 1.

Sub Loop4 () 'Täyttää jokaisen toisen solun C1: C50 arvoilla X' --- Kommentti Dim X kokonaislukuna X = 1-50 Vaihe 2 Alue ("C" & X). Arvo = X Seuraava X End Sub 

Koodin selitys:

  • Olemme määrittäneet X: n kokonaislukuna
  • X = 1-50 Vaihe 2; tämä alkaa 1: stä X: hen 50: een asti ja kasvaa 2 kertaa joka kerta
  • Alue ("C" & X). Arvo = X; tämä rivi tallentaa arvon X ja siirtyy alueelle C1 - C50

Loop 5 (VBA For Loop in Reverse with STEP Instruction)

Ei ole välttämätöntä, että For -silmukan laskuri siirtyy vain pienistä arvoista korkeampiin. sen sijaan For -silmukka voi kulkea taaksepäin, eli liian korkeista pienempiin arvoihin.

Vaikka Askel -arvo on oletusarvoisesti eteenpäin 1, se voidaan kuitenkin asettaa numeroon päinvastaisessa järjestyksessä.

Sub Loop5 () 'Täyttää solut D1: D50 arvosta X' --- Kommentti 'Tässä tapauksessa X pienenee 1' --- Kommentti Dim X Kokonaislukuna, Rivi kokonaislukuna Rivi = 1 X = 50 To 0 Vaihe -1 Alue ("D" ja rivi). Arvo = X rivi = rivi + 1 seuraava X loppuosa 

Koodin selitys:

  • Olemme määrittäneet X & Row kokonaislukuna
  • Rivi sisältää arvon 1
  • X = 50 -0 Vaihe -1; tämä alkaa 50: stä ja pienenee 1 x: llä 0: een
  • Alue ("D" & rivi) .Arvo = X; tämä rivi tallentaa arvon X ja siirtyy alueelle D1 - D50

Silmukka 6 (täyttää joka toinen solu taaksepäin STEP-2: lla)

Yllä olevassa esimerkissä silmukka voidaan käyttää askelta ja järjestystä nähdäkseen, toimiiko For -silmukka eteen- tai taaksepäin.

Sub Loop6 () 'Täyttää jokaisen toisen solun E1: E100 arvoilla X' --- Kommentti 'Tässä tapauksessa X pienenee 2' --- Kommentti Dim X kokonaislukuna, Rivi kokonaislukuna Rivi = 1 X = 100 0 Vaiheeseen -2 Alue ("E" ja rivi). Arvo = X Rivi = Rivi + 2 Seuraava X Loppuosa 

Koodin selitys:

  • Olemme määrittäneet X & Row kokonaislukuna
  • Rivi sisältää arvon 1
  • X = 100 -0 Vaihe -2; tämä alkaa 100: sta ja pienenee 2 x: llä 0: een
  • Alue ("E" ja rivi) .Arvo = X; tämä rivi tallentaa arvon X ja siirtyy alueelle E1 - E100

Silmukka 7 (silmukka, jossa IF -ehto: Täyttää solut alkaen tietystä solusta)

Tämä täyttää solut solusta F11 arvolla 11, kunnes X täyttää IF -ehdot

Sub Loop7 () 'Alkaa täyttää solut F11: F100 arvoilla X' --- Kommentti 'Tämä poistuu silmukasta 50' jälkeen --- Kommentti Dim X kokonaislukuna X = 11-100 Alue ("F") & X). Arvo = X Jos X = 50, niin MsgBox ("Heippa") Lopeta loppuun, jos seuraava X End Sub 

Koodin selitys:

  • Olemme määrittäneet X: n kokonaislukuna
  • X = 11-100; alkaa 11: stä 1 x: n lisäyksellä, kunnes ehto täyttyy
  • Alue ("F" & X) .Arvo = X; tämä rivi tallentaa arvon X ja siirtyy alueelle F11, kunnes ehto täyttyy

  • Kun arvo 50 on syötetty soluun F50, seuraava viestiruutu tulee näkyviin

Johtopäätös: Edellä olevien 7 esimerkin avulla voimme käyttää For -silmukkaa tavallisessa tai missä tahansa automaatio -osassa.

Jos pidit blogistamme, jaa se ystävillesi Facebookissa. Voit myös seurata meitä Twitterissä ja Facebookissa.
Haluaisimme kuulla sinusta, kerro meille, kuinka voimme parantaa, täydentää tai innovoida työtämme ja parantaa sitä sinulle. Kirjoita meille sähköpostitse