/ / Loop Excel VBA

Excel VBA Loop

Buclă unică | Buclă dublă | Triple Loop | În timp ce buclă

Looping-ul este una dintre cele mai puternice tehnici de programare. A buclă în Excel VBA vă permite să treceți printr-o gamă de celule cu doar câteva linii de coduri.

Buclă unică

Puteți utiliza o singură buclă pentru a trece printr-o gamă unidimensională de celule.

Plasați un buton de comandă pe foaia dvs. de lucru și adăugați următoarele linii de cod:

Dim i As Integer

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

Rezultat când faceți clic pe butonul de comandă de pe foaie:

Buclă unică în Excel VBA

Explicaţie: Liniile de cod între For și Next vor fi executate de șase ori. Pentru i = 1, Excel VBA introduce valoarea 100 în celula de la intersecția dintre rândul 1 și coloana 1. Când Excel VBA ajunge la Next i, crește i cu 1 și revine la instrucțiunea For. Pentru i = 2, Excel VBA introduce valoarea 100 în celula de la intersecția dintre rândul 2 și coloana 1, etc.

Notă: este o practică bună să întotdeauna indentați (tab-ul) codul dintre cuvintele For și Next. Acest lucru face ca codul dvs. să fie mai ușor de citit.

Buclă dublă

Puteți utiliza o buclă dublă pentru a trece printr-o gamă bidimensională de celule.

Plasați un buton de comandă pe foaia dvs. de lucru și adăugați următoarele linii de cod:

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

Rezultat când faceți clic pe butonul de comandă de pe foaie:

Buclă dublă în Excel VBA

Explicaţie: Pentru i = 1 și j = 1, Excel VBA introduce valoarea 100 în celula de la intersecția dintre rândul 1 și coloana 1. Când Excel VBA ajunge la Next j, crește cu j cu 1 și revine la instruciunea For j. Pentru i = 1 și j = 2, Excel VBA introduce valoarea 100 în celulă la intersecția rândului 1 și coloanei 2. Apoi Excel VBA ignoră Următorul j deoarece j rulează numai de la 1 la 2. Când Excel VBA ajunge la Next i , creste i cu 1 si sare inapoi in declaratia For i. Pentru i = 2 și j = 1, Excel VBA introduce valoarea 100 în celula de la intersecția dintre rândul 2 și coloana 1, etc.

Triple Loop

Aveți posibilitatea să utilizați o buclă triplă pentru a trece prin intervale bidimensionale pe mai multe foi de lucru Excel.

Plasați un buton de comandă pe foaia dvs. de lucru și adăugați următoarele linii de cod:

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

Explicaţie: Singura modificare efectuată în comparație cu codul pentru bucla dublă este faptul că am adăugat încă o buclă și am adăugat foi de lucru (c). în fața celulelor pentru a obține intervalul bidimensional pe prima foaie pentru c = 1, a doua foaie pentru c = 2 și a treia foaie pentru c = 3. Descărcați fișierul Excel pentru a vedea acest rezultat.

În timp ce buclă

Pe lângă bucla For Next, există și alte bucle în Excel VBA. De exemplu, buclă "Do While While". Codul plasat între Do While și Loop va fi repetat atât timp cât partea după Do While este adevărată.

1. Plasați un buton de comandă pe foaia de lucru și adăugați următoarele linii de cod:

Dim i As Integer
i = 1

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

Rezultat când faceți clic pe butonul de comandă de pe foaie:

În timp ce buclă

Explicaţie: atâta timp cât eu este mai mic decât 6, Excel VBA introduce valoarea 20 în celula de la intersecția rândului i și coloana 1 și incrementează cu 1. În Excel VBA (și în alte limbi de programare), simbolul "=" înseamnă devine. Nu înseamnă egală. Deci i = i + 1 înseamnă că devin i + 1. Cu alte cuvinte: luați valoarea actuală a i și adăugați 1 la ea. De exemplu, dacă i = 1, i devine 1 + 1 = 2. Ca rezultat, valoarea 20 va fi plasată în coloana A de cinci ori (nu șase deoarece Excel VBA se oprește când i este egal cu 6).

2. Introduceți câteva cifre în coloana A.

Orice număr de rânduri

3. Plasați un buton de comandă pe foaia de lucru și adăugați următoarele linii de cod:

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

Rezultat când faceți clic pe butonul de comandă de pe foaie:

Avansate în timp ce buclă

Explicație: atâta timp cât celulele (i, 1).Valoarea nu este goală (<> înseamnă că nu este egală cu), Excel VBA introduce valoarea în celula de la intersecția rândului i și coloana 2, adică 10 mai mare decât valoarea din celula de la intersecția rândului i și coloana 1 VBA Excel se oprește când eu este egal cu 7 deoarece Cells (7, 1) .Value este gol. Aceasta este o modalitate excelentă de a trece prin orice număr de rânduri pe o foaie de lucru.

De asemenea, citiți: