Pętla While Wend w Excel VBA

1. Pętla While Wend – wprowadzenie

Pętla While Wend jest najprostszą w swojej konstrukcji pętlą dostępną w VBA. Jeśli nasz kod ma być krótki, nieskomplikowany i mieć prostą konstrukcję, zaleca się stosowanie właśnie tej pętli zamiast pętel Do…Loop. Daje nam ona podobne możliwości. Poniżej najprostszy przykład pętli wyświetlający licznik pętli, aż do momentu, gdy osiągnie on wartość 5. Wadą pętli While…Wend jest brak możliwości wyjścia z pętli przed jej ukończeniem. Dla przykładu pętle Do…Loop i For…Next dają nam taką możliwość.

2. Przykład wykorzystania pętli While…Wend

Zróbmy  krótki przykład. Wklejmy do arkusza Excel dane z poniższej tabelki, zaczynając od komórki „A1”.

Indeks giełdowyObroty w mlnzmianaWzrost/spadek
WIG201731,375%
WIG46756,182%
mWIG403912,73-6%
sWIG8014136,79-8%
NCIndex286,95%

Napiszmy proste makro z wykorzystaniem pętli. Naszym zadaniem będzie wypełnienie ostatniej kolumny wartością wzrost, spadek lub brak zmian w zależności od znaku+/- w kolumnie „C”. Wartości ujemne będą tutaj informowały o spadku.

Sub WhileWendExample()

Dim intCounter As Integer
intCounter = 2

While intCounter <= 6

 Select Case Sgn(Cells(intCounter, 3))
 Case -1
 Cells(intCounter, 4) = "Spadek"
 Case 1
 Cells(intCounter, 4) = "Wzrost"
 Case Else
 Cells(intCounter, 4) = "brak zmian"
 End Select
 
 intCounter = intCounter + 1
Wend
End Sub

Jak widzisz licznik pętli zaczyna się od wartości 2, a więc od drugiego wiersza. Znak plus, bądź minus sprawdziliśmy przy użyciu funkcji SGN(). Funkcja ta zwraca wartość ze zbioru -1/0/1 w zależności od znaku argumentu. Sama instrukcja przyporządkowująca, to w naszym wypadku Select CASE. Oczywiście podobny przykład możemy zrobić przy użyciu instrukcji If…Then…Else. Blokiem kodu intCounter = intCounter + 1 zwiększamy licznik pętli o 1, przechodząc do kolejnych wierszy.

Kurs Excel VBA - Pętla While Wend
Kurs Excel VBA – Pętla While Wend

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

3.1 Zmodyfikuj przykład z rozdziału przy zastosowaniu instrukcji If Then Else.

3.2 Zmodyfikuj przykład, w taki sposób, by wynik Wzrost/Spadek/ brak zmian dodatkowo wypełniał komórkę kolorem np zielony, czerwony, żółty. Formatowanie komórek, czcionek i zakresów opisywałem w tej części szkolenia.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

6 komentarzy “Pętla While Wend w Excel VBA”