Instrukcja
If Then
Przykłady opisane w tej lekcji dostępne są w arkuszu Excela:
VBA.xls, tylko ich samodzielne
przerobienie daje gwarancję zapamiętania tej lekcji.
Przykłady dla wszystkich lekcji szkolenia Excel 2003: ExcelSzkolenie.pl
Cwiczenia Excel 2003.zip
Przykład 1.
(Arkusz: ‘If Then’)
Dzięki wiedzy zdobytej w lekcji
opisującej nagrywanie makr możemy w prosty sposób nagrać makro, które wyłącza
linie siatki, po nagraniu takiego makra możemy je przypisać do wcześniej
dodanej ikony (lekcja Zmiany w menu i własne ikony)
Możemy też nagrać makro, które
włącza linie siatki i także przypisać je do nowo dodanej ikony.
Ale czy nie byłoby wygodniej
przygotować makro, które włącza linie siatki, jeśli są wyłączone i wyłącza je,
jeśli są włączone?
Aby to zrobić zarejestrujemy nowe
makro.
Wprowadzamy nazwę, np.
Linie_Siatki_Wlacz_i_Wylacz. Makro zapisujemy w Skoroszycie makr osobistych.
Klikamy OK.
Wyłączamy Linie siatki (Menu:
Narzędzia → Opcje, karta: Widok) i klikamy OK.
Kręcimy raz pokrętłem myszy w dół.
Ponownie wchodzimy do Menu:
Narzędzia → Opcje, karta: Widok i włączamy Linie siatki.
Aby sprawdzić, jaki kod makra został
zarejestrowany wchodzimy do Visual Basic for Applications (Alt+F11) i
znajdujemy je odpowiednim module w pliku PERSONAL.XLS.
To, w którym module makro zostanie
zarejestrowane zależy od tego ile modułów wcześniej posiadaliśmy w tym pliku.
Kod makra jest następujący:
Sub
Linie_Siatki_Wlacz_i_Wylacz()
'
' Linie_Siatki_Wlacz_i_Wylacz Makro
' Makro zarejestrowane 2008-02-20, autor szypersp
'
'
ActiveWindow.DisplayGridlines = False
ActiveWindow.SmallScroll Down:=9
ActiveWindow.DisplayGridlines
= True
End Sub
Komenda:
Sub jest oznaczeniem początku makra.
Linie_Siatki_Wlacz_i_Wylacz jest nazwą makra
() oznacza, że makro nie pobiera danych zewnętrznych,
wszystkie proste makra nie pobierają danych zewnętrznych.
Linie rozpoczynające się od symbolu
apostrofa ' to komentarz, automatycznie Excel dodaje 5 takich linii, w
przypadku krótkich makr są one zbędne i najlepiej jest je od razu skasować.
Linie komentarza są wyświetlane zieloną czcionką i podczas wykonywania makra są
pomijane przez komputer. Służą jedynie do dopisywanie komentarzy dla samego
siebie lub innej osoby, która będzie edytować dane makro, np jaki informację
jakie operacje powinna wykonywać dana część makra.
Komenda:
ActiveWindow.DisplayGridlines = False → wyłącza linie siatki
Komenda: ActiveWindow.SmallScroll
Down:=9 → powoduje przesunięcie ekranu w dół, podczas nagrywania
makra pokręciliśmy gałką przewijania w dół i zostało to nagrane. Komenda ta
jest zupełnie zbędna i możemy ją od razu skasować.
Komenda: ActiveWindow.DisplayGridlines
= True → włącza linie siatki
Komenda: End Sub → jest
oznaczeniem końca makra
Po wykasowaniu zbędnych linii nasze
makro wygląda następująco:
Sub
Linie_Siatki_Wlacz_i_Wylacz()
ActiveWindow.DisplayGridlines
= False
ActiveWindow.DisplayGridlines = True
End Sub
Jednak wciąż nie ma takiej
funkcjonalności jaką zaplanowaliśmy. Aby ją uzyskać posłużymy się instrukcją
If-Then.
Instrukcja ta w swojej składni jest
podobna do funkcji Jeżeli dostępnej w Excelu:
If [warunek] Then [działanie jeśli
prawda] Else [działanie jeśli fałsz]
Część zaczynająca się od Else jest
opcjonalna jeżeli interesuje nas tylko jeden warunek nie musimy z niej
korzystać.
W naszym przykładzie wystarczy już
tylko połączyć nasze makro z konstrukcją If-Then
Sub
Linie_Siatki_Wlacz_i_Wylacz()
If
ActiveWindow.DisplayGridlines = False Then ActiveWindow.DisplayGridlines = True
Else: ActiveWindow.DisplayGridlines = False
End Sub
Cała konstrukcja If-Then mogłaby być
zapisana w jednej linijce, ale aby była bardziej przejrzysta poniżej użyłem
przejścia do kolejnej linii, którym w VBA jest spacja i dolny myślnik, czyli ‘
_’.
Po wprowadzeniu tych zmian, makro
jest gotowe i możemy je przypisać do ikony na ekranie.
Przykład 2.
(Arkusz: ‘If Then’)
Funkcja if umożliwia wykonanie
większej ilości operacji. W takim przypadku należy użyć nieco innej składni, w
której największą zmianą jest zakończenie funkcji If komendą End If.
If warunek Then
[polecenia jeżeli warunek jest
spełniony]
[polecenia jeżeli warunek jest
spełniony]
Else
[polecenia jeżeli warunek nie jest
spełniony]
[polecenia jeżeli warunek nie jest
spełniony]
End If
W poniższym przykładzie makro wykorzystuje
wyżej pokazaną składnie.
Funkcja isNumeric sprawdza czy
komórka A2 zawiera liczbę, jeśli tak to w komórce B2 wprowadzana jest liczba 2
razy większa (pierwsze polecenie), po czym w komórce C2 wprowadzany jest
kwadrat liczby znajdującej się w A2. Jeżeli wartość w komórce A2 nie jest
liczbą w B2 wprowadzany jest komunikat "W komórce A2 musisz wpisać
liczbę".
Sub Instrukcja_If_Then_Przykład_2()
If IsNumeric(Range("A2").Value) Then
Range("B2").Value =
Range("A2").Value * 2
Range("C2").Value =
Range("A2").Value * Range("A2").Value
Else
Range("B2").Value = "W
komórce A2 musisz wpisać liczbę"
End If
End Sub
Więcej przykładów wykorzystania
funkcji If Then znajdziesz w lekcjach poświęconym innym tematom, ponieważ
istnieje bardzo mało użytecznych makr, które nie wykorzystują tej funkcji.
Szkolenie Excel 2003 Szkolenie Excel 2007