fbpx

La funzione MsgBox di VBA

DESCRIZIONE

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.

SINTASSI
MsgBox( Prompt, [Buttons], [Title], [HelpFile], [Context] )
ARGOMENTI DELLA FUNZIONE
PromptLa 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:

ValorePulsanti mostrati
vbOKOnlyOK
vbOKCancelOK, Annulla
vbAbortRetryIgnoreInterrompi, Riprova, Ignora
vbYesNoCancelSì, No, Annulla
vbYesNoSì, No
vbRetryCancelRiprova, Annulla



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.

ValoreSignificato
vbCriticalVisualizza l'icona di un messaggio critico nella finestra di messaggio
vbQuestionVisualizza un'icona con un punto interrogativo nella finestra di messaggio
vbExclamationVisualizza un'icona con un punto esclamativo nella finestra di messaggio
vbInformationVisualizza un'icona con la i di informazioni nella finestra di messaggio



Opzioni per specificare il pulsante predefinito:

ValoreSignificato
vbDefaultButton1Indica che il pulsante più a sinistra è selezionato come predefinito
vbDefaultButton2Indica che il secondo pulsante da sinistra è selezionato come predefinito
vbDefaultButton3Indica che il terzo pulsante da sinistra è selezionato come predefinito
vbDefaultButton4Indica che il quarto pulsante da sinistra è selezionato come predefinito



Opzioni per definire la modalità della finestra di messaggio:

ValoreSignificato
vbApplicationModalSospende l'applicazione Excel corrente fino a quando l'utente non risponde alla casella
vbSystemModalSospende tutte le applicazioni fino a quando l'utente non risponde alla casella
vbMsgBoxHelpButtonVisualizza un pulsante di aiuto oltre agli altri pulsanti
vbMsgBoxSetForegroundAssicura che la finestra di messaggio sia visualizzata in primo piano
vbMsgBoxRightAllinea a destra il contenuto della finestra di messaggio
vbMsgBoxRtlReadingVisualizza il testo nella finestra di messaggio da destra a sinistra



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]
NOTE DI UTILIZZO

La funzione MsgBox di VBA restituisce uno dei seguenti valori di enumerazione VbMsgBoxResult, informando lo sviluppatore dell’opzione selezionata dall’utente:

VbMsgBoxResultValorePulsante selezionato
vbOK1OK
vbCancel2Annulla
vbAbort3Interrompi
vbRetry4Riprova
vbIgnore5Ignora
vbYes6
vbNo7No
ESEMPI DI UTILIZZO

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:

 

Esempio di una semplice finestra di messaggio prodotta dalla funzione MsgBox

 

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:

 

Esempio di una finestra di messaggio Si/No prodotta dalla funzione MsgBox

 

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:

 

Esempio di una finestra di messaggio Riprova/Annulla prodotta dalla funzione VBA MsgBox

 

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:

 

Esempio di una finestra di messaggio VBA con una interruzione di riga nel testo

 

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.

LINK ALLA GUIDA IN LINEA DI OFFICE