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: