Instrukcja If Then

Przykłady opisane w tej lekcji dostępne są w arkuszu Excela: VBA.xlsm, tylko ich samodzielne przerobienie daje gwarancję zapamiętania tej lekcji.

Przykłady dla wszystkich lekcji szkolenia Excel 2013: ExcelSzkolenie.pl Cwiczenia Excel 2013.zip

 

Ta lekcja może być obejrzana lub przeczytana poniżej.

Film wygląda najlepiej jeśli będzie odtwarzany w rozdzielczości 720p HD, rozdzielczość można zmienić dopiero po uruchomieniu filmu klikając na ikonie trybika  która pojawi się w prawym dolnym rogu poniższego ekranu. Po kilku sekundach od zmiany obraz wyostrzy się.

 

 

 

 

 

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 ikony na pasku narzędzi szybki dostęp.

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: WIDOK → Linie siatki

Kręcimy raz pokrętłem myszy w dół.

Włączamy Linie siatki Menu: WIDOK → 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  Makro

'

 

'

    ActiveWindow.DisplayGridlines = False

    ActiveWindow.SmallScroll Down:=12

    ActiveWindow.DisplayGridlines = True

End Sub

 

Komenda: Sub jest oznaczeniem początku makra.

 

Linie_Siatki 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 dopisywania komentarzy dla samego siebie lub innej osoby, która będzie edytować dane makro. Zwykle wpisuje się w nie np jakie operacje powinna wykonywać dana część makra.

 

Komenda: ActiveWindow.DisplayGridlines = False → wyłącza linie siatki

 

Komenda: ActiveWindow.SmallScroll Down:=12 → powoduje przesunięcie ekranu w dół, podczas nagrywania makra pokręciliśmy gałką przewijania w dół i zostało to nagrane. Wszystko co zrobimy podczas nagrywania makra jest nagrywane!

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.