Casetele de dialog (Dialog Boxes) din Excel VBA sunt folosite pentru a afișa informații utilizatorului.
Funcția MsgBox afișează un mesaj într-o casetă de dialog și așteaptă ca utilizatorul să facă clic pe un buton, apoi returnează un număr întreg care indică butonul pe care a făcut clic utilizatorul.
Cel mai comun dialog este caseta de mesaje, dar putem folosi și caseta de intrare.
Până acum, am folosit caseta de dialog MsgBox pentru a afișa informații pe ecran.
Sub delete_B2()
Range("B2").ClearContents
MsgBox "The contents of B2 have been deleted !" '„Conținutul celulei B2 a fost șters!”
End Sub
În acest caz, MsgBox este apelat cu un singur argument. Vedea codul de mai jos:
Acum vom crea o casetă de dialog care va cere confirmarea ștergerii înainte ca cele două instrucțiuni să fie executate. Apoi, vom folosi trei argumente:
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
Rezultat:
Private Sub warning(var_text As String)
MsgBox "Caution : " & var_text & " !"
End Sub
Sub macro_test()
If Range("A1") = "" Then
warning "empty cell" '"celula goala"
ElseIf Not IsNumeric(Range("A1")) Then
warning "non-numerical value" '„valoare non-numerică”
End If
End Sub
vbYesNo specifică că butoanele de dialog sunt „Yes” și „No”, iar vbYes reprezintă butonul „Yes”:
If MsgBox("Text", vbYesNo, "Title") = vbYes Then 'Dacă butonul Yes este apăsat...
| Constant | Valoare numerică | Descriere |
|---|---|---|
| vbOKOnly | 0 | ![]() |
| vbOKCancel | 1 | ![]() ![]() |
| vbAbortRetryIgnore | 2 | ![]() ![]() ![]() |
| vbYesNoCancel | 3 | ![]() ![]() ![]() |
| vbYesNo | 4 | ![]() ![]() |
| vbRetryCancel | 5 | ![]() ![]() |
| vbCritical | 16 | ![]() |
| vbQuestion | 32 | ![]() |
| vbExclamation | 48 | ![]() |
| vbInformation | 64 | ![]() |
Iată un exemplu MsgBox care va continua să fie afișat de fiecare dată în buclă până când utilizatorul apasă Yes:
Sub humor()
Do
If MsgBox("Do you like the Moonexcel site ?", vbYesNo, "Survey") = vbYes Then
Exit Do '=> Răspuns Yes = Da, ieșim din buclă
End If
Loop While 1 = 1 '=> Buclă fără sfârșit
MsgBox ";-)"
End Sub
Pentru a afișa o panglică nouă, puteți utiliza funcția Chr cu argumentul 10, care este responsabilă pentru mutarea panglicii, de exemplu:
MsgBox "Example 1" & Chr(10) & "Example 2" & Chr(10) & Chr(10) & "Example 3"
Obtinem urmatorul rezultat:
O casetă de intrare solicită utilizatorului să introducă o valoare într-o casetă de dialog, de exemplu:
Sub example()
Dim result As String
result = InputBox("Text ?", "Title") 'Variabilei i se atribuie valoarea introdusă în InputBox
If result <> "" Then 'Dacă valoarea este orice, dar nu „”, atunci rezultatul va fi afișat
MsgBox result
End If
End Sub
Obtinem urmatorul rezultat:
Al treilea argument poate fi folosit pentru a seta valoarea implicită:
InputBox("Text ?", "Title", "Default value")
Rezultatul este următorul: