VBA IF…THEN… – czyli jak kontrolować kod
Jeśli czytałeś poprzednie artykuły z cyklu „Podstawy VBA”, to teraz nadeszła chwila prawdy! Instrukcja VBA IF…THEN w połączeniu z wcześniejszą wiedzą pozwoli stworzyć Ci pierwszy użyteczny kod.
VBA IF…THEN (dla jasności JEŻELI…WÓWCZAS…) pozwoli Ci sterować, jaką drogą powinien „iść” Twój program. Jeśli znasz funkcję JEŻELI, to pójdzie Ci naprawdę szybko 🙂
Przeczytaj również:
- Jak nagrać makro?
- Podstawy VBA. Od czego zacząć?
- Jak pracować z zakresami komórek w VBA?
- Zmienne VBA – poznaj i wykorzystaj
VBA IF: podstawy i składnia
Tak naprawdę, tego typu instrukcja warunkowa jest chyba podstawą każdego języka programowania. Piszę „chyba”, bo nie jestem programistą. Ale na tyle na ile rozumiem pojęcie algorytmu, to w każdym języku potrzebna jest instrukcja, która pozwoli programiście sterować „zachowaniem” programu.
Podobnie jest w języku VBA, a służy do tego między innymi instrukcja IF…THEN. Idea jest taka: jeżeli w trakcie działania programu trafiasz na dwie lub więcej możliwości to instrukcja pozwala zdecydować co ma się wydarzyć dalej. Graficznie można to pokazać jak na poniższym obrazku.
Dla przykładu, weźmy taki fragment Twojego kodu, gdzie dalsze działanie programu uzależnione jest od wartości wpisanej do komórki A1. Jeżeli użytkownik wpisze coś do komórki (PRAWDA), to ma nastąpić dalsze działanie, sprawdzające czy wartość jest liczbą czy tekstem. Jeżeli komórka A1 pozostaje pusta – nic się nie dzieje, a w zasadzie program kończy działanie nie wykonując żadnej operacji.
VBA IF: 1 czy 2 linie kodu
Składnia kodu VBA w podstawowej postaci, wygląda następująco:
IF Range("A1")<>"" Then Range("A2").Value = Range("A1").Value
W powyższym przykładzie, program sprawdza zawartość komórki A1. Jeśli komórka nie jest pusta (<>dwa znaki cudzysłowu), to komórka A2 przyjmie wartość taką samą jak komórka A1. W przeciwnym razie – nic się stanie i program zakończy swoje działanie.
Opisaną wyżej instrukcję możesz również umieścić w dwóch liniach kodu. W takim przypadku na końcu musisz dodać wyrażenie End If, które zamyka działanie całej instrukcji.
IF Range("A1")<>""
Then Range("A2").Value = Range("A1").Value
End If
VBA IF…ELSE…ELSEIF…
No dobrze, ale do tej pory nie mieliśmy okazji do rzeczywistego sterowania programem. Czyli nie pisaliśmy co ma się wydarzyć, jeżeli pierwszy warunek jest niespełniony. Program po prostu kończył działanie. Teraz to nadrobimy.
Weźmy taki przykład. Program ma sprawdzić zawartość komórki A1, do której powinien być wprowadzana litera oznaczająca region (N oznacza Północ, S – Południe, W – Zachód, E – Wschód) Program ma zamienić literę na jeden z czterech regionów. Jeśli komórka nie będzie miała oznaczenia: N, S, W, E to powinien pojawić się napis „Brak”.
Jak widzisz mamy tutaj do czynienia z więcej niż jednym warunkiem. Musimy bowiem sprawdzić, czy A1 = „N”, a jeżeli nie, to czy równa się „S”, a jeżeli nie…itd. Aby wprowadzić takie wielowarunkowe sprawdzenie, w wyrażeniu trzeba użyć instrukcji ELSEIF oraz ELSE. ELSEIF pozwala wprowadzić kolejny warunek, a po ELSE wskazujesz co ma się wydarzyć w każdym innym przypadku (poza opisanymi warunkami)
Kod będzie wyglądał tak:
Sub Regiony()
If Range("A1") = "N" Then
Range("A1") = "Północ"
ElseIf Range("A1") = "S" Then
Range("A1") = "Południe"
ElseIf Range("A1") = "W" Then
Range("A1") = "Zachód"
ElseIf Range("A1") = "E" Then
Range("A1") = "Wschód"
Else
Range("A1") = "Brak"
End If
End Sub
Program zadziała jak na poniższym filmie.
Chcesz lepiej poznać Excela? Zapisz się na Excelness News
Podsumowanie
Znajomość instrukcji IF-THEN to kolejny krok, aby opanować podstawy VBA. W większości przypadków, będziesz mógł sterować działaniem swoich programów wykorzystując to rozwiązanie. Dla bardziej złożonych przypadków (większej ilości warunków) użyjesz wyrażenia SELECT CASE. Ale o tym w jednym z kolejnych artykułów. Nie przegap i zapisz się na newsletter, bądź dołącz do grupy na Facebooku.
Masz problemy z Excelem? Uzyskaj pomoc na grupie Keep Calm And Use Excel.
0 Comments