Okna dialogowe (okna dialogowe) w Excel VBA służą do wyświetlania informacji użytkownikowi.
Funkcja MsgBox wyświetla komunikat w oknie dialogowym i czeka, aż użytkownik kliknie przycisk, a następnie zwraca liczbę całkowitą wskazującą, który przycisk kliknął użytkownik.
Najpopularniejszym oknem dialogowym jest Okno Wiadomości, ale możemy także użyć Okna Wprowadzania.
Do tej pory do wyświetlania informacji na ekranie używaliśmy okna dialogowego MsgBox.
Sub delete_B2()
Range("B2").ClearContents
MsgBox "The contents of B2 have been deleted !" '„Zawartość komórki B2 została usunięta!”
End Sub
W tym przypadku MsgBox jest wywoływany tylko z jednym argumentem. Widzieć kod poniżej:
Teraz utworzymy okno dialogowe, które poprosi o potwierdzenie usunięcia przed wykonaniem dwóch instrukcji. Następnie użyjemy trzech argumentów:
MsgBox([TEXT], [BUTTONS], [TITLE])
Sub delete_B2()
If MsgBox("Are you sure that you wish to delete the contents of B2 ?", vbYesNo, "Confirm") = vbYes
Then
Range("B2").ClearContents
MsgBox "The contents of B2 have been deleted !"
End If
End Sub
Wynik:
Private Sub warning(var_text As String)
MsgBox "Caution : " & var_text & " !"
End Sub
Sub macro_test()
If Range("A1") = "" Then
warning "empty cell" '„pusta komórka”
ElseIf Not IsNumeric(Range("A1")) Then
warning "non-numerical value" '„wartość nienumeryczna”
End If
End Sub
vbYesNo określa, że przyciski okna dialogowego to „Yes” i „No”, a vbYes reprezentuje przycisk „Yes”:
If MsgBox("Text", vbYesNo, "Title") = vbYes Then 'Jeśli zostanie naciśnięty przycisk Tak...
| Stały | Wartość numeryczna | Opis |
|---|---|---|
| vbOKOnly | 0 | ![]() |
| vbOKCancel | 1 | ![]() ![]() |
| vbAbortRetryIgnore | 2 | ![]() ![]() ![]() |
| vbYesNoCancel | 3 | ![]() ![]() ![]() |
| vbYesNo | 4 | ![]() ![]() |
| vbRetryCancel | 5 | ![]() ![]() |
| vbCritical | 16 | ![]() |
| vbQuestion | 32 | ![]() |
| vbExclamation | 48 | ![]() |
| vbInformation | 64 | ![]() |
Oto przykład MsgBox, który będzie wyświetlany za każdym razem w pętli, dopóki użytkownik nie naciśnie Yes:
Sub humor()
Do
If MsgBox("Do you like the Moonexcel site ?", vbYesNo, "Survey") = vbYes Then
Exit Do '=> Odpowiedź Yes = Tak, wychodzimy z pętli
End If
Loop While 1 = 1 '=> Niekończąca się pętla
MsgBox ";-)"
End Sub
Aby wyświetlić nową wstążkę można skorzystać z funkcji Chr z argumentem 10, która odpowiada za przesunięcie wstążki, przykładowo:
MsgBox "Example 1" & Chr(10) & "Example 2" & Chr(10) & Chr(10) & "Example 3"
Otrzymujemy następujący wynik:
Pole wejściowe monituje użytkownika o wprowadzenie wartości w oknie dialogowym, na przykład:
Sub example()
Dim result As String
result = InputBox("Text ?", "Title") 'Zmiennej przypisuje się wartość wpisaną w polu wejściowym
If result <> "" Then 'Jeśli wartość jest inna niż „”, wówczas zostanie wyświetlony wynik
MsgBox result
End If
End Sub
Otrzymujemy następujący wynik:
Trzeci argument może zostać użyty do ustawienia wartości domyślnej:
InputBox("Text ?", "Title", "Default value")
Wynik jest następujący: