La funzione MsgBox di VBA visualizza una finestra di messaggio modale. La funzione restituisce un’enumerazione VbMsgBoxResult, che indica quale pulsante è stato selezionato dall’utente.
MsgBox( Prompt, [Buttons], [Title], [HelpFile], [Context] )
Prompt | La stringa di testo che si desidera visualizzare nella finestra di messaggio | |||||||||||||||||||||||||||||||||||||||||||||||||
[Buttons] | Un argomento facoltativo che specifica le proprietà della finestra di messaggio. Le opzioni principali, che definiscono il numero e il tipo di pulsanti da visualizzare, sono:
Se l'argomento [Buttons] viene omesso o se non viene specificato nessuno dei valori precedenti, viene utilizzato il valore predefinito vbOKOnly. Esistono anche altri valori di [Buttons] che specificano proprietà aggiuntive per la finestra di messaggio. Questi valori possono essere utilizzati insieme ad altre opzioni.
Opzioni per specificare il pulsante predefinito:
Opzioni per definire la modalità della finestra di messaggio:
Solo una opzione per ciascuno dei gruppi qua sopra dovrebbe essere fornita alla funzione. |
|||||||||||||||||||||||||||||||||||||||||||||||||
[Title] | Una stringa di testo facoltativa che specifica un titolo da visualizzare nella parte superiore della finestra di messaggio | |||||||||||||||||||||||||||||||||||||||||||||||||
[HelpFile] | Un argomento stringa facoltativo, che identifica il file della Guida relativo alla casella di input. Se viene fornito l'argomento [HelpFile], deve essere fornito anche l'argomento [Context] |
|||||||||||||||||||||||||||||||||||||||||||||||||
[Context] | Un valore numerico facoltativo che è l'ID di contesto per l'argomento della Guida relativo alla casella di input. Se viene fornito l'argomento [Context], deve essere fornito anche l'argomento [HelpFile] |
La funzione MsgBox di VBA restituisce uno dei seguenti valori di enumerazione VbMsgBoxResult, informando lo sviluppatore dell’opzione selezionata dall’utente:
VbMsgBoxResult | Valore | Pulsante selezionato |
---|---|---|
vbOK | 1 | OK |
vbCancel | 2 | Annulla |
vbAbort | 3 | Interrompi |
vbRetry | 4 | Riprova |
vbIgnore | 5 | Ignora |
vbYes | 6 | Sì |
vbNo | 7 | No |
Esempio 1 – Semplice messaggio di benvenuto
' Mostra un messaggio di benvenuto
MsgBox( "Benvenuto!" )
Il codice qua sopra mostra all’utente la seguente finestra di messaggio:
Il codice VBA viene messo in pausa mentre è visualizzata la finestra di messaggio. Quando l’utente farà clic sul pulsante OK, il programma continuerà a essere eseguito.
Esempio 2 – MsgBox che restituisce Sì o No
' Chiede all'utente se desidera continuare un lungo calcolo
Dim answer As VbMsgBoxResult
answer = MsgBox( "Questo calcolo potrebbe richiedere alcuni minuti. Vuoi continuare?", vbYesNo )
If answer = vbYes Then
'Codice per continuare il calcolo
Else
'Codice per interrompere il calcolo
End If
Il codice qua sopra mostra all’utente la seguente finestra di messaggio:
Si noti che il codice VBA qua sopra memorizza il risultato dalla funzione MsgBox in una variabile chiamata answer. Il valore di questa variabile viene quindi utilizzato in un’istruzione If.
Esempio 3 – Funzione MsgBox che riceve due argomenti [Button]
' Lettura del file non riuscita. Chiede all'utente se desidera riprovare o annullare
Dim answer As VbMsgBoxResult
answer = MsgBox( "Lettura del file non riuscita, data.txt", vbRetryCancel + vbExclamation )
If answer = vbRetry Then
'Codice per riprovare la lettura
Else
'Codice per interrompere la lettura
End If
Il codice qua sopra mostra all’utente la seguente finestra di messaggio:
Si noti che, nel codice VBA qua sopra:
- Vengono forniti due valori per l’argomento [Buttons] della funzione MsgBox. Questi sono separati dal simbolo + (cioè vbRetryCancel + vbExclamation).
- L’argomento vbExclamation ha fatto apparire l’icona con il punto esclamativo nella finestra di messaggio.
- Il risultato della funzione MsgBox è memorizzato in una variabile chiamata answer. Il valore di questa variabile viene quindi utilizzato in un’istruzione If.
Esempio 4 – Forzare un’interruzione di riga in una finestra di messaggio
È possibile utilizzare la costante vbNewLine per rappresentare un’interruzione di riga in una stringa VBA. Questa deve essere concatenata con gli altri componenti di una stringa, usando l’operatore &.
Un esempio di questo è mostrato di seguito:
' Visualizza il valore nella cella A1 del foglio di lavoro attivo
MsgBox( "Il valore corrente in cella A1 è:" & vbNewLine & Range( "A1" ) )
Il codice qua sopra mostra all’utente la seguente finestra di messaggio:
Si noti che, nel precedente codice VBA, l’operatore & è stato utilizzato per concatenare la stringa “Il valore corrente in cella A1 è:” con vbNewLine e con il valore dalla cella A1 del foglio attivo. La stringa risultante viene quindi fornita come argomento Prompt alla funzione MsgBox.