Le finestre di dialogo (finestre di dialogo) in Excel VBA vengono utilizzate per visualizzare le informazioni all'utente.
La funzione MsgBox visualizza un messaggio in una finestra di dialogo e attende che l'utente faccia clic su un pulsante, quindi restituisce un numero intero che indica su quale pulsante l'utente ha fatto clic.
La finestra di dialogo più comune è la Message Box, ma possiamo anche utilizzare la Input Box.
Finora abbiamo utilizzato la finestra di dialogo MsgBox per visualizzare le informazioni sullo schermo.
Sub delete_B2() Range("B2").ClearContents MsgBox "The contents of B2 have been deleted !" '"Il contenuto della cella B2 è stato cancellato!" End Sub
In questo caso MsgBox viene chiamato con un solo argomento. Vedere codice qui sotto:
Ora creeremo una finestra di dialogo che chiederà conferma per l'eliminazione prima che le due istruzioni vengano eseguite. Quindi ci sono tre argomenti che useremo:
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
Risultato:
Private Sub warning(var_text As String) MsgBox "Caution : " & var_text & " !" End Sub Sub macro_test() If Range("A1") = "" Then warning "empty cell" '"cella vuota" ElseIf Not IsNumeric(Range("A1")) Then warning "non-numerical value" '"valore non numerico" End If End Sub
vbYesNo specifica che i pulsanti di dialogo sono "Yes" e "No" e vbYes rappresenta il pulsante "Yes":
If MsgBox("Text", vbYesNo, "Title") = vbYes Then 'Se viene premuto il pulsante Yes...
Costante | Valore numerico | Descrizione |
---|---|---|
vbOKOnly | 0 | |
vbOKCancel | 1 | |
vbAbortRetryIgnore | 2 | |
vbYesNoCancel | 3 | |
vbYesNo | 4 | |
vbRetryCancel | 5 |
vbCritical | 16 | |
vbQuestion | 32 | |
vbExclamation | 48 | |
vbInformation | 64 |
Ecco un esempio MsgBox che continuerà a essere visualizzato ogni volta nel ciclo finché l'utente non preme Yes:
Sub humor() Do If MsgBox("Do you like the Moonexcel site ?", vbYesNo, "Survey") = vbYes Then Exit Do '=> Risposta Yes = Sì, usciamo dal ciclo End If Loop While 1 = 1 '=> Ciclo infinito MsgBox ";-)" End Sub
Per visualizzare una nuova barra multifunzione, è possibile utilizzare la funzione Chr con argomento 10, che è responsabile dello spostamento della barra multifunzione, ad esempio:
MsgBox "Example 1" & Chr(10) & "Example 2" & Chr(10) & Chr(10) & "Example 3"
Otteniamo il seguente risultato:
Un InputBox richiede all'utente di inserire un valore in una finestra di dialogo, ad esempio:
Sub example() Dim result As String result = InputBox("Text ?", "Title") 'Alla variabile viene assegnato il valore immesso nell'InputBox If result <> "" Then 'Se il valore è diverso da "", verrà visualizzato il risultato MsgBox result End If End Sub
Otteniamo il seguente risultato:
Il terzo argomento può essere utilizzato per impostare il valore predefinito:
InputBox("Text ?", "Title", "Default value")
Il risultato è il seguente: