Jak już wcześniej wspominałem instrukcja MsgBox pozwala na wyświetlenie kilku różnych przycisków np. Tak i Nie. W ten sposób można się skomunikować z użytkownikiem zadając mu proste pytanie. W zależności od udzielonej odpowiedzi można wywołać odpowiednią sekwencję kodu. Aby to zrobić należy użyć instrukcji warunkowej If…Then lub If…Then…Else.
Poniższy przykład demonstruje użycie instrukcji warunkowej:
Sub InstrukcjaWarunkowa1()
odp = MsgBox("Czy masz dzisiaj urodziny?", vbYesNo Or vbInformation)
If odp = vbYes Then
MsgBox "Wszystkiego najlepszego!", vbInformation
End If
End Sub
Po uruchomieniu makra pojawi się pytanie „Czy masz dzisiaj urodziny?”. Odpowiedź użytkownika zostanie zapamiętana w zmiennej Odp. Jeśli użytkownik kliknie w przycisk Tak (czyli zostanie spełniony warunek Odp = vbYes), to zostanie wykonany blok instrukcji znajdujący się między Then a End If czyli w tym przypadku pokaże się komunikat „Wszystkiego najlepszego!”. Gdy użytkownik kliknie w przycisk Nie, to nic się nie stanie.
Instrukcja warunkowa IF ma też drugi wariant, który pozwala na wykonanie innego kodu, gdy warunek nie został spełniony. Prezentuje to poniższy przykład:
Sub InstrukcjaWarunkowa2()
odp = MsgBox("Czy zjadłeś już obiad", vbYesNo Or vbInformation)
If odp = vbYes Then
MsgBox "W lodówce masz deser!", vbInformation
Else
MsgBox "Zjedz obiad!", vbInformation
End If
End Sub
W tym przykładzie pojawi się pytanie: „Czy zjadłeś już obiad”. Gdy użytkownik kliknie w przycisk Tak, zostanie wykonany kod znajdujący się pomiędzy Then a Else, czyli w tym przypadku użytkownik zostanie poinformowany o możliwości zjedzenia deseru. Natomiast gdyby użytkownik kliknął w przycisk Nie, to wtedy zostanie wykonany blok instrukcji znajdujący się pomiędzy Else a End If czyli w tym przypadku pojawi się prośba o zjedzenie obiadu.
Wskazówka: zauważ, że instrukcja IF…Then..Else w pewnym sensie przypomina Excelową funkcję JEŻELI.