Start > Kursy on-line > Excel - makra i VBA

Excel - makra i VBA


Instrukcja warunkowa If

Załącznik z przykładami dla tego rozdziału znajduje się w tym miejscu.

Zwykłe operacje na obiektach arkusza, przypisywanie danych i tym podobne czynności są potrzebne, lecz tak naprawdę nie wnoszą nic poza zakres poleceń programu Excel dostępnych bez użycia języka programowania VBA.
Aby tworzony program realizował zadania wykraczające poza zwykłe czynności, musimy nauczyć się przekazywać do niego pewnego rodzaju logikę, czyli elementy przyczynowo-skutkowe i reakcje na komendy wydawane przez użytkownika.
Ten rozdział będzie prezentował instrukcję If - Then - Else, która wzbogaca kod, umożliwiając wykonanie sekwencji poleceń w zależności od wypełnienia warunku w niej postawionego. Załóżmy, że podobnie jak w poprzednim rozdziale, przygotujemy procedurę, która będzie miała za zadanie przenieść odpowiednie wartości pomiędzy komórkami (dla ułatwienia przygotujemy ją w ramach jednego arkusza), jednak lokalizacja docelowa będzie uwarunkowana od załóżmy wartości. Komórka A1 będzie zawierać jedną wartość, B1 drugą, natomiast w zależności od tego która z nich jest większa, będzie ona wstawiana do komórki C1:


Sub wklej()

If Cells(1, 1).Value > Cells(1, 2).Value Then

	Cells(1, 3).Value = Cells(1, 1).Value

	Else

		Cells(1, 3).Value = Cells(1, 2).Value

End If

End Sub
Po słowie kluczowym If zapisaliśmy warunek sprawdzający czy wartość w komórce A1 jest większa od tej umieszczonej w B1 potem musimy użyć słowa Then aby po nim podać polecenie umieszczające odpowiednią wartość w komórce C1. Po tym następuje opcjonalne sformułowanie Else, które pozwala na umieszczenie poleceń na zasadzie: "a co jeśli nie jest powyższy warunek spełniony". Całość kończy się poleceniem End If. Dodać należy, że w sprawdzanym warunku można używać operatorów And (i) i Or (lub) wraz z nawiasami w celu zbudowania bardziej skomplikowanych wyrażeń logicznych. Istotne jest też to, iż instrukcje warunkowe można w sobie zagnieżdżać: czyli po np. sformułowaniu Else możemy podać kolejny warunek If - ważne aby każdy był zakończony w odpowiednim miejscu słowami End If (jeśli o tym zapomnimy, program zwróci błąd podczas wykonywania procedury).