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: