/ / Excel VBA Loop

"Excel VBA Loop"

Viena linija | Dviguba kilpa | Trigubas kilpas | Daryk, kol loti

Looping yra vienas iš galingiausių programavimo būdų. A kilpa in Excel VBA leidžia jums kilpa per daugelį langelių su keliomis kodo eilutėmis.

Viena linija

Galite naudoti vieną kilpą per vieną matmenų ląstelių diapazoną.

Įdėkite komandų mygtuką į savo darbalapį ir pridėkite šias kodo eilutes:

Dim i As Integer

For i = 1 To 6
    Cells(i, 1).Value = 100
Next i

Rezultatas spustelėjus komandą mygtuką ant lapo:

Viena linija Excel VBA

Paaiškinimas: Kodo linijos tarp "For" ir "Next" bus vykdomos šešis kartus. Jei i = 1, "Excel VBA" įveda reikšmę 100 į ląstelę ties 1 ir 1 stulpelių sankirta. Kai "Excel VBA" pasiekia "Next", jis padidina "i" 1 reikšmę ir grįžta į "For" pareiškimą. Jei i = 2, "Excel VBA" įveda reikšmę 100 į ląstelę, esančią 2 eilutės ir 1 stulpelio sankirtos ir tt

Pastaba: geriausia praktiškai visada išdėstyti kodą tarp žodžių "Už" ir "Kitas". Tai leidžia lengviau skaityti jūsų kodą.

Dviguba kilpa

Galite naudoti dvigubą kilpą per dvipusį ląstelių diapazoną.

Įdėkite komandų mygtuką į savo darbalapį ir pridėkite šias kodo eilutes:

Dim i As Integer, j As Integer

For i = 1 To 6
    For j = 1 To 2
        Cells(i, j).Value = 100
    Next j
Next i

Rezultatas spustelėjus komandą mygtuką ant lapo:

Dviguba kilpa Excel VBA

Paaiškinimas: Jei i = 1 ir j = 1, Excel VBA įveda reikšmę 100 į ląstelę ties 1 ir 1 stulpelių sankirta. Kai "Excel VBA" pasiekia Next j, jis didėja j "1" ir sugrįžta į "For j" pareiškimą. Jei i = 1 ir j = 2, Excel VBA įveda reikšmę 100 į ląstelę ties 1 ir 2 stulpelių sankirta. Kitas, Excel VBA ignoruoja Next j, nes j veikia tik nuo 1 iki 2. Kai Excel VBA pasiekia Next i , jis padidina i su 1 ir grįžta į "For i" pareiškimą. Jei i = 2 ir j = 1, Excel VBA įveda reikšmę 100 į ląstelę, esančią 2 eilutės ir 1 stulpelio sankirtos ir tt

Trigubas kilpas

Galite naudoti triskartinę kilpą per dvipusį diapazoną keliuose "Excel" darbalapiuose.

Įdėkite komandų mygtuką į savo darbalapį ir pridėkite šias kodo eilutes:

Dim c As Integer, i As Integer, j As Integer

For c = 1 To 3
    For i = 1 To 6
        For j = 1 To 2
            Worksheets(c).Cells(i, j).Value = 100
        Next j
    Next i
Next c

Paaiškinimas: Vienintelis pakeitimas, palyginti su dvigubos kilpos kodais, yra tas, kad pridėjome dar vieną kilpą ir pridėjome užduotys (c). priešais ląsteles, kad gautumėte dvimatę diapazoną pirmajame lape c = 1, antrasis lapas c = 2 ir trečiasis lapas c = 3. Atsisiųskite "Excel" failą, kad pamatytumėte šį rezultatą.

Daryk, kol loti

Be "Next" kilpos, "Excel VBA" yra ir kitų kilpų. Pavyzdžiui, "Do Loop". Kodas tarp "Do Doing" ir "Loop" bus pakartotas tol, kol dalis po "Do Un" yra teisinga.

1. Į darbalapį pridėkite komandų mygtuką ir pridėkite šias kodo eilutes:

Dim i As Integer
i = 1

Do While i < 6
    Cells(i, 1).Value = 20
    i = i + 1
Loop

Rezultatas spustelėjus komandą mygtuką ant lapo:

Daryk, kol loti

Paaiškinimas: jei i yra mažesnis nei 6, "Excel VBA" įveda į ląstelę vertę į i ir i stulpelio sankirtą ir padidina i iki 1. "Excel VBA" (ir kitomis programavimo kalbomis) simbolis "=" reiškia tampa. Tai nereiškia vienodos. Taigi i = i + 1 reiškia i tampa i + 1. Kitaip tariant: paimkite dabartinę i vertę ir pridėkite 1 prie jo. Pavyzdžiui, jei i = 1, i tampa 1 + 1 = 2. Dėl to vertė 20 bus dedama į A stulpelį penkis kartus (ne šeši, nes Excel VBA sustoja, kai aš lygus 6).

2. Įrašykite kai kuriuos skaičius A stulpelyje.

Bet eilučių skaičius

3. Į savo darbalapį pridėkite komandų mygtuką ir pridėkite šias kodo eilutes:

Dim i As Integer
i = 1

Do While Cells(i, 1).Value <> ""
    Cells(i, 2).Value = Cells(i, 1).Value + 10
    i = i + 1
Loop

Rezultatas spustelėjus komandą mygtuką ant lapo:

Išplėstinė "Do Loop"

Paaiškinimas: tol, kol ląstelės (i, 1).Vertė nėra tuščia (<> reiškia, kad nėra lygi), "Excel VBA" įveda vertę į ląstelę i ir 2 stulpelių sankirtos taške, kuri yra 10 didesnė už ląstelėje esančią vertę ties i ir 1 stulpelio sankirta "Excel VBA" sustoja, kai aš lygus 7, nes ląstelės (7, 1). Vertė yra tuščia. Tai yra puikus būdas įsikibti per bet kokį skaičių eilučių darbalapyje.

Taip pat perskaitykite: