/ / Excel VBA Loop

Excel VBA Loop

Pojedyncza pętla | Podwójna pętla | Potrójna pętla | Do While Loop

Pętla jest jedną z najpotężniejszych technik programowania. ZA pętla w Excel VBA umożliwia przechodzenie przez zakres komórek za pomocą zaledwie kilku linii kodu.

Pojedyncza pętla

Możesz użyć pojedynczej pętli do przechodzenia przez jednowymiarowy zakres komórek.

Umieść przycisk polecenia w arkuszu i dodaj następujące wiersze kodu:

Dim i As Integer

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

Wynik po kliknięciu przycisku polecenia na arkuszu:

Pętla pojedyncza w programie Excel VBA

Wyjaśnienie: Linie kodu między For i Next będą wykonywane sześć razy. W przypadku i = 1 Excel VBA wprowadza wartość 100 do komórki na przecięciu wiersza 1 i kolumny 1. Gdy Excel VBA osiągnie wartość Dalej, zwiększa się z 1 i przeskakuje z powrotem do instrukcji For. Dla i = 2, Excel VBA wprowadza wartość 100 do komórki na przecięciu rzędu 2 i kolumny 1 itd.

Uwaga: dobrą praktyką jest zawsze wcięcie (tabulator) kodu między słowami For i Next. Ułatwia to czytanie Twojego kodu.

Podwójna pętla

Możesz użyć podwójnej pętli do przejścia przez dwuwymiarowy zakres komórek.

Umieść przycisk polecenia w arkuszu i dodaj następujące wiersze kodu:

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

Wynik po kliknięciu przycisku polecenia na arkuszu:

Double Loop w Excel VBA

Wyjaśnienie: Dla i = 1 i j = 1, Excel VBA wprowadza wartość 100 do komórki na przecięciu wiersza 1 i kolumny 1. Gdy Excel VBA osiągnie Następny j, zwiększa j z 1 i przeskakuje z powrotem do instrukcji For j. Dla i = 1 i j = 2, Excel VBA wprowadza wartość 100 do komórki na przecięciu wiersza 1 i kolumny 2. Następnie Excel VBA ignoruje Następne j, ponieważ j działa tylko od 1 do 2. Gdy Excel VBA osiąga wartość następną , zwiększa się z 1 i przeskakuje z powrotem do instrukcji For i. Dla i = 2 i j = 1, Excel VBA wprowadza wartość 100 do komórki na przecięciu rzędu 2 i kolumny 1 itd.

Potrójna pętla

Możesz używać potrójnej pętli do przechwytywania dwuwymiarowych zakresów na wielu arkuszach Excela.

Umieść przycisk polecenia w arkuszu i dodaj następujące wiersze kodu:

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

Wyjaśnienie: Jedyną zmianą dokonaną w porównaniu z kodem dla podwójnej pętli jest to, że dodaliśmy jeszcze jedną pętlę i dodano arkusze (c). przed komórkami, aby uzyskać dwuwymiarowy zakres na pierwszym arkuszu dla c = 1, drugi arkusz dla c = 2 i trzeci arkusz dla c = 3. Pobierz plik Excel, aby zobaczyć ten wynik.

Do While Loop

Oprócz pętli For Next istnieją inne pętle w Excel VBA. Na przykład Do While Loop. Kod umieszczony pomiędzy Do Do i Loop zostanie powtórzony tak długo, jak długo po części do Do While jest prawdziwe.

1. Umieść przycisk polecenia w arkuszu i dodaj następujące linie kodu:

Dim i As Integer
i = 1

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

Wynik po kliknięciu przycisku polecenia na arkuszu:

Do While Loop

Wyjaśnienie: tak długo, jak i jest niższa niż 6, Excel VBA wprowadza wartość 20 do komórki na przecięciu wiersza i kolumny 1 i zwiększa ją o 1. W programie Excel VBA (oraz w innych językach programowania) symbol "=" oznacza staje się. To nie znaczy równe. Więc i = i + 1 oznacza, że ​​staje się i + 1. Innymi słowy: weź bieżącą wartość i i dodaj 1 do niej. Na przykład, jeśli i = 1, ja staje się 1 + 1 = 2. W rezultacie wartość 20 zostanie umieszczona w kolumnie A pięć razy (nie sześć, ponieważ Excel VBA zatrzymuje się, gdy mam 6).

2. Wprowadź liczby w kolumnie A.

Dowolna liczba wierszy

3. Umieść przycisk polecenia w arkuszu i dodaj następujące linie kodu:

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

Wynik po kliknięciu przycisku polecenia na arkuszu:

Zaawansowane wykonaj podczas pętli

Objaśnienie: tak długo, jak komórki (i, 1).Wartość nie jest pusta (<> oznacza, że ​​nie jest równa), Excel VBA wprowadza wartość do komórki na przecięciu wiersza i kolumny 2, czyli 10 wyżej niż wartość w komórce na przecięciu wiersza i kolumny 1 Program Excel VBA zatrzymuje się, gdy jest równy 7, ponieważ komórki (7, 1). Wartość jest pusta. Jest to świetny sposób na przechodzenie przez dowolną liczbę wierszy arkusza roboczego.

Przeczytaj również: