Wprowadzenie do pętli w Excel VBA 5


1. Wprowadzenie do pętli w Excel VBA

Pętle są najmocniejszym elementem języków programowania. To właśnie za ich pomocą możemy automatyzować działania, przyspieszać pracę naszych programów, robić rzeczy, których nie moglibyśmy zrobić w arkuszu danych Excela. Sama pętla jak jej nazwa wskazuje służy do tzw. zapętlania, a więc wykonywania jakiejś operacji wiele razy. W VBA w Excelu wyróżniamy 3 główne rodzaje pętli While…Wend, Do…Loop oraz For…Next. Wszystkie wymienione pętle VBA poznamy w dalszej części szkolenia. W tym rozdziale zajmiemy się podstawowym opisem pętli While…Wend oraz jej zastosowaniem.

Kurs Excel VBA - Pętle VBA

Kurs Excel VBA – Pętle VBA

2. Działanie przykładowej pętli – Jak napisać pętlę w VBA

Pętle VBA, które najczęściej będziemy stosować w naszym kodzie bazować będą na następującym schemacie:

Lub też

Sama interpretacja kodu oznacza dla nas tyle, co: Wykonuj instrukcje, jeżeli spełniony jest opisany warunek. Zróbmy na tej podstawie prosty przykład. Wykorzystując pętlę While…Wend  wypełnijmy na początek 100 pierwszych wierszy naszego arkusza Excel dowolną wartością np “tak działa pętla”. Do dzieła!

Opis przykładu:

Stworzyliśmy właśnie nasz pierwszy program z wykorzystaniem pętli. Spróbujmy opisać, co tak właściwie po kolei zostało wykonane:

  • Stworzyliśmy program o nawie WhileWendExample
  • Zadeklarowaliśmy jawną zmienną o nazwie intCounter, która jest naszym licznikiem
  • Ustawiliśmy dla naszej zmiennej wartość 1. To ważne, gdyż wartość default to 0, co oznacza, że bez tego bloku chcielibyśmy w pierwszej kolejności wypełnić komórkę “A0”, której jak wiemy w naszym arkuszu nie ma.
  • Ustawiliśmy warunek, by pętla wykonywała się, gdy licznik intCounter jest mniejszy lub równy 100.
  • Odwołaliśmy się w instrukcji do komórki “A1” poprzez polecenie Cells(intCounter, 1), co przy naszej początkowej wartości licznika intCounter oznacza tyle, co Cells(1, 1). Wypełniliśmy w ten sposób komórkę “A1”.
  • Częścią instrukcji intCounter = intCounter + 1 zwiększamy wartość licznika o 1 przy każdorazowym działaniu pętli. Pętla wykonuje się w tym wypadku 100 razy do momentu uzyskania wartości niespełniającej warunku <=100. Następuje wyjście z pętli.

W naszym przykładzie wprowadziliśmy jedną zmienną. To właśnie instrukcja dotycząca tej zmiennej liczbowej została “zapętlona”. Zmodyfikujmy nasz program. Zamiast frazy “tak działa pętla” wprowadźmy do komórek wartość licznika intCounter. W ten sposób nasz program wypełni 100 kolejnych komórek w kolumnie “A” liczbami od 1 do 100.

3. Zadania (Rozwiązanie możesz wpisać w komentarzu)

3.1 Analogicznie do przykładu wypełnij kolumny liczbami od 1 do 100.

3.2 Przy pomocy pętli wprowadź do arkusza liczby od 1 do 10, tak, aby co drugi wiersz był wypełniony.


Dodaj komentarz

Twój adres email nie zostanie opublikowany.

5 komentarzy do “Wprowadzenie do pętli w Excel VBA

  • Rob

    Kolumny:
    Sub LoopExample()
    Dim intCounter As Integer
    intCounter = 1
    While intCounter <= 100
    Cells(1, intCounter) = intCounter
    intCounter = intCounter + 1
    Wend
    End Sub

  • GreG

    Zadanie 2:

    Sub zapętlamy2()
    Dim intCounter As Integer
    Dim intCounter2 As Integer
    intCounter = 1
    intCounter2 = 1
    Do While intCounter2 <= 10
    Cells(intCounter, 1) = intCounter2
    intCounter = intCounter + 2
    intCounter2 = intCounter2 + 1
    Loop

    End Sub

  • Anonim

    Sub LoopExample_2() ‘zadanie z końca

    Dim intCounter As Integer
    intCounter = 1

    While intCounter <= 10
    Cells(intCounter * 2 – 1, 1) = intCounter
    intCounter = intCounter + 1
    Wend

    End Sub

  • Marcin

    3.1

    Option Explicit
    Sub PetleWprowadzenie2()

    Dim intCounter As Integer
    intCounter = 1

    While intCounter <= 100
    Cells(1, intCounter) = intCounter
    intCounter = intCounter + 1
    Wend

    End Sub

     

    3.2

    Dim intRow As Integer
    intCounter = 1
    intRow = 1

    While intCounter <= 10
    Cells(intRow, 1) = intCounter
    intCounter = intCounter + 1
    intRow = intRow + 2
    Wend

    End Sub

  • Agnieszka

    Sub Example2()
    Dim intCounter As Integer
    intCounter = 1
    While intCounter <= 100
    If intCounter / 2 = Round(intCounter / 2) Then
    Cells(intCounter, 1) = intCounter
    intCounter = intCounter + 1
    Else
    intCounter = intCounter + 1
    End If
    Wend
    End Sub