Excel VBA MsgBox (Casella messaggi) - Tutto quello che devi sapere!

In Excel VBA, puoi utilizzare la funzione MsgBox per visualizzare una finestra di messaggio (come mostrato di seguito):

Un MsgBox non è altro che una finestra di dialogo che puoi utilizzare per informare i tuoi utenti mostrando un messaggio personalizzato o ottenendo alcuni input di base (come Sì/No o OK/Annulla).

Mentre viene visualizzata la finestra di dialogo MsgBox, il codice VBA viene interrotto. È necessario fare clic su uno dei pulsanti in MsgBox per eseguire il codice VBA rimanente.

Nota: in questo tutorial, userò le parole message box e MsgBox in modo intercambiabile. Quando lavori con Excel VBA, devi sempre usare MsgBox.

Anatomia di un MsgBox VBA in Excel

Una finestra di messaggio ha le seguenti parti:

  1. Titolo: viene in genere utilizzato per visualizzare l'argomento della finestra di messaggio. Se non specifichi nulla, viene visualizzato il nome dell'applicazione, che in questo caso è Microsoft Excel.
  2. Richiesta: Questo è il messaggio che si desidera visualizzare. Puoi usare questo spazio per scrivere un paio di righe o anche visualizzare tabelle/dati qui.
  3. Pulsante/i: Mentre OK è il pulsante predefinito, puoi personalizzarlo per mostrare pulsanti come Sì/No, Sì/No/Annulla, Riprova/Ignora, ecc.
  4. Icona Chiudi: è possibile chiudere la finestra del messaggio facendo clic sull'icona di chiusura.

Sintassi della funzione MsgBox VBA

Come ho detto, MsgBox è una funzione e ha una sintassi simile ad altre funzioni VBA.

MsgBox( prompt [, bottoni ] [, titolo ] [, file di aiuto, contesto ] )

  • richiesta - Questo è un argomento obbligatorio. Visualizza il messaggio che vedi in MsgBox. Nel nostro esempio, il testo "Questo è un MsgBox di esempio" è il "prompt". È possibile utilizzare fino a 1024 caratteri nel prompt e utilizzarlo anche per visualizzare i valori delle variabili. Nel caso in cui desideri mostrare un prompt con più righe, puoi farlo anche tu (ne parleremo più avanti in questo tutorial).
  • [pulsanti] - Determina quali pulsanti e icone vengono visualizzati in MsgBox. Ad esempio, se utilizzo vbOkOnly, mostrerà solo il pulsante OK e se utilizzo vbOKCancel, mostrerà entrambi i pulsanti OK e Annulla. Tratterò diversi tipi di pulsanti più avanti in questo tutorial.
  • [titolo] - Qui puoi specificare quale didascalia vuoi nella finestra di dialogo del messaggio. Questo viene visualizzato nella barra del titolo di MsgBox. Se non specifichi nulla, mostrerà il nome dell'applicazione.
  • [file di aiuto] - È possibile specificare un file della guida a cui è possibile accedere quando un utente fa clic sul pulsante Guida. Il pulsante di aiuto viene visualizzato solo quando si utilizza il codice del pulsante per esso. Se stai utilizzando un file della guida, devi anche specificare l'argomento del contesto.
  • [contesto] - È un'espressione numerica che è il numero di contesto della Guida assegnato all'argomento della Guida appropriato.

Se sei nuovo al concetto di Msgbox, sentiti libero di ignorare gli argomenti [helpfile] e [context]. Raramente li ho visti usati.

Nota: tutti gli argomenti tra parentesi quadre sono facoltativi. Solo l'argomento "prompt" è obbligatorio.

Costanti del pulsante MsgBox VBA di Excel (esempi)

In questa sezione, tratterò i diversi tipi di pulsanti che è possibile utilizzare con un MsgBox VBA.

Prima di mostrarti il ​​codice VBA e l'aspetto di MsgBox, ecco una tabella che elenca tutte le diverse costanti dei pulsanti che puoi utilizzare.

Pulsante Costante Descrizione
vbOKOnly Mostra solo il pulsante OK
vbOKAnnulla Mostra i pulsanti OK e Annulla
vbAbortRetryIgnore Mostra i pulsanti Interrompi, Riprova e Ignora
vbSìNo Mostra i pulsanti Sì e No
vbSìNoAnnulla Mostra i pulsanti Sì, No e Annulla
vbRiprovaAnnulla Mostra i pulsanti Riprova e Annulla
vbMsgBoxHelpButton Mostra il pulsante Aiuto. Perché funzioni, è necessario utilizzare gli argomenti di aiuto e contesto nella funzione MsgBox
vbDefaultButton1 Imposta il primo pulsante come predefinito. È possibile modificare il numero per modificare il pulsante predefinito. Ad esempio, vbDefaultButton2 imposta il secondo pulsante come predefinito

Nota: mentre esamini gli esempi di creazione di pulsanti diversi, potresti chiederti qual è il punto di avere questi pulsanti se non ha alcun impatto sul codice.

Lo fa! In base alla selezione, puoi codificare ciò che vuoi che faccia il codice. Ad esempio, se si seleziona OK, il codice dovrebbe continuare e se si fa clic su Annulla, il codice dovrebbe interrompersi. Questo può essere fatto usando le variabili e assegnando il valore del Message Box a una variabile. Lo tratteremo nelle sezioni successive di questo tutorial.

Ora diamo un'occhiata ad alcuni esempi di come i diversi pulsanti possono essere visualizzati in un MsgBox e come appare.

Pulsanti MsgBox - vbOKOnly (predefinito)

Se usi solo il prompt e non specifichi nessuno degli argomenti, otterrai la finestra di messaggio predefinita come mostrato di seguito:

Di seguito è riportato il codice che darà questa finestra di messaggio:

Sub DefaultMsgBox() MsgBox "Questa è una scatola di esempio" End Sub

Nota che la stringa di testo deve essere tra virgolette.

Puoi anche usare il pulsante costante vbOKOnly, ma anche se non specifichi nulla, viene preso come predefinito.

Pulsanti MsgBox - OK e Annulla

Se vuoi mostrare solo il pulsante OK e Annulla, devi usare la costante vbOKCancel.

Sub MsgBoxOKCancel() MsgBox "Vuoi continuare?", vbOKCancel End Sub

Pulsanti MsgBox - Interrompi, Riprova e Ignora

È possibile utilizzare la costante "vbAbortRetryIgnore" per mostrare i pulsanti Interrompi, Riprova e Ignora.

Sub MsgBoxAbortRetryIgnore() MsgBox "Cosa vuoi fare?", vbAbortRetryIgnore End Sub

Pulsanti MsgBox - Sì e No

Puoi utilizzare la costante "vbYesNo" per mostrare i pulsanti Sì e No.

Sub MsgBoxYesNo() MsgBox "Dovremmo fermarci?", vbYesNo End Sub

Pulsanti MsgBox - Sì, No e Annulla

Puoi utilizzare la costante "vbYesNoCancel" per mostrare i pulsanti Sì, No e Annulla.

Sub MsgBoxYesNoCancel() MsgBox "Dovremmo fermarci?", vbYesNoCancel End Sub

Pulsanti MsgBox - Riprova e Annulla

È possibile utilizzare la costante "vbRetryCancel" per mostrare i pulsanti Riprova e Annulla.

Sub MsgBoxRetryCancel() MsgBox "Cosa vuoi fare dopo?", vbRetryCancel End Sub

Pulsanti MsgBox - Pulsante Aiuto

Puoi usare la costante "vbMsgBoxHelpButton" per mostrare il pulsante di aiuto. Puoi usarlo con altre costanti del pulsante.

Sub MsgBoxRetryHelp() MsgBox "Cosa vuoi fare dopo?", vbRetryCancel + vbMsgBoxHelpButton End Sub

Nota che in questo codice abbiamo combinato due diverse costanti del pulsante (vbRetryCancel + vbMsgBoxHelpButton). La prima parte mostra i pulsanti Riprova e Annulla e la seconda parte mostra il pulsante Guida.

Pulsanti MsgBox - Impostazione di un pulsante predefinito

Puoi utilizzare la costante "vbDefaultButton1" per impostare il primo pulsante come predefinito. Ciò significa che il pulsante è già selezionato e se si preme invio, viene eseguito quel pulsante.

Di seguito è riportato il codice che imposterà il secondo pulsante (il pulsante "No") come predefinito.

Sub MsgBoxOKCancel() MsgBox "Cosa vuoi fare dopo?", vbYesNoCancel + vbDefaultButton2 End Sub

Nella maggior parte dei casi, il pulsante più a sinistra è il pulsante predefinito. Puoi scegliere altri pulsanti usando vbDefaultButton2, vbDefaultButton3 e vbDefaultButton4.

Costanti dell'icona MsgBox VBA di Excel (esempi)

Oltre ai pulsanti, puoi anche personalizzare le icone visualizzate nella finestra di dialogo MsgBox. Ad esempio, puoi avere un'icona critica rossa o un'icona di informazioni blu.

Di seguito una tabella che elenca il codice che mostrerà l'icona corrispondente.

Icona Costante Descrizione
vbCritical Mostra l'icona del messaggio critico
vbDomanda Mostra l'icona della domanda
vbExclamation Mostra l'icona del messaggio di avviso
vbInformazioni Mostra l'icona delle informazioni

Icone MsgBox - Critiche

Se vuoi mostrare un'icona critica nel tuo MsgBox, usa la costante vbCritical. Puoi usarlo insieme ad altre costanti del pulsante (mettendo un segno + tra i codici).

Ad esempio, di seguito è riportato un codice che mostrerà il pulsante OK predefinito con un'icona critica.

Sub MsgBoxCriticalIcon() MsgBox "Questa è una scatola di esempio", vbCritical End Sub

Se vuoi mostrare l'icona critica con i pulsanti Sì e No, usa il seguente codice:

Sub MsgBoxCriticalIcon() MsgBox "Questa è una casella di esempio", vbYesNo + vbCritical End Sub

Icone MsgBox - Domanda

Se vuoi mostrare un'icona critica nel tuo MsgBox, usa la costante vbQuestion.

Sub MsgBoxQuestionIcon() MsgBox "Questa è una scatola di esempio", vbYesNo + vbQuestion End Sub

Icone MsgBox - Punto esclamativo

Se vuoi mostrare un'icona con un punto esclamativo nel tuo MsgBox, usa la costante vbExclamation.

Sub MsgBoxExclamationIcon() MsgBox "Questa è una casella di esempio", vbYesNo + vbExclamation End Sub

Icone MsgBox - Informazioni

Se vuoi mostrare un'icona informativa nel tuo MsgBox, usa la costante vbInformation.

Sub MsgBoxInformationIcon() MsgBox "Questa è una casella di esempio", vbYesNo + vbInformation End Sub

Personalizzazione di titolo e prompt in MsgBox

Quando si utilizza MsgBox, è possibile personalizzare il titolo e i messaggi di richiesta.

Finora, l'esempio che abbiamo visto ha utilizzato Microsoft Excel come titolo. Nel caso in cui non si specifichi l'argomento del titolo, MsgBox utilizza automaticamente il titolo dell'applicazione (che in questo caso è stato Microsoft Excel).

Puoi personalizzare il titolo specificandolo nel codice come mostrato di seguito:

Sub MsgBoxInformationIcon() MsgBox "Vuoi continuare?", vbYesNo + vbQuestion, "Fase 1 di 3" End Sub

Allo stesso modo, puoi anche personalizzare il messaggio di richiesta.

Puoi anche aggiungere interruzioni di riga nel messaggio di richiesta.

Nel codice seguente, ho aggiunto un'interruzione di riga utilizzando 'vbNewLine'.

Sub MsgBoxInformationIcon() MsgBox "Vuoi continuare?" & vbNewLine & "Fai clic su Sì per continuare", vbYesNo + vbQuestion, "Fase 1 di 3" End Sub

È inoltre possibile utilizzare il carattere di ritorno a capo - Chr(13) - o l'avanzamento riga - Chr(10) per inserire una nuova riga nel messaggio di richiesta.

Nota che puoi aggiungere una nuova riga solo al messaggio di richiesta e non al titolo.

Assegnazione del valore MsgBox a una variabile

Finora, abbiamo visto gli esempi in cui abbiamo creato finestre di messaggio e personalizzato i pulsanti, le icone, il titolo e il prompt.

Tuttavia, fare clic su un pulsante non ha avuto alcun effetto.

Con la funzione MsgBox in Excel, puoi decidere cosa vuoi fare quando un utente fa clic su un pulsante specifico. E questo è possibile in quanto ad ogni pulsante è associato un valore.

Quindi, se clicco sul pulsante Sì, la funzione MsgBox restituisce un valore (6 o la costante vbYes) che posso utilizzare nel mio codice. Allo stesso modo, se l'utente seleziona il pulsante No, restituisce un valore diverso ((7 o la costante vbNo)) che posso utilizzare nel codice.

Di seguito è una tabella che mostra i valori esatti e la costante restituita dalla funzione MsgBox. Non è necessario memorizzarli, basta esserne consapevoli e puoi usare le costanti che sono più facili da usare.

Pulsante cliccato Costante Valore
Ok vbOk 1
Annulla vbAnnulla 2
Interrompi vbInterrompi 3
Riprova vbRiprova 4
Ignorare vbIgnora 5
vbSì 6
No vbNo 7

Ora vediamo come possiamo controllare il codice macro VBA in base a quale pulsante fa clic un utente.

Nel codice seguente, se l'utente fa clic su Sì, visualizza il messaggio "Hai fatto clic su Sì" e se l'utente fa clic su No, visualizza "Hai fatto clic su No".

Sub MsgBoxInformationIcon() Risultato = MsgBox ("Vuoi continuare?", vbYesNo + vbQuestion) If Result = vbYes Then MsgBox "Hai fatto clic su Sì" Else: MsgBox "Hai fatto clic su No" End If End Sub

Nel codice sopra, ho assegnato il valore della funzione MsgBox alla variabile Risultato. Quando si fa clic sul pulsante Sì, la variabile Risultato ottiene la costante vbSì (o il numero 6) e quando si fa clic su No, la variabile Risultato ottiene la costante vbNo (o il numero 7).

Quindi ho usato un costrutto If Then Else per verificare se la variabile Result contiene il valore vbYes. Se lo fa, mostra il prompt "Hai fatto clic su Sì", altrimenti mostra "Hai fatto clic su No".

Puoi utilizzare lo stesso concetto per eseguire un codice se un utente fa clic su Sì ed esce dal sottotitolo quando fa clic su No.

Nota: quando si assegna l'output MsgBox a una variabile, è necessario inserire tra parentesi gli argomenti della funzione MsgBox. Ad esempio, nella linea Risultato = MsgBox(“Vuoi continuare?”, vbYesNo + vbQuestion), puoi vedere che gli argomenti sono tra parentesi.

Se vuoi approfondire ulteriormente la funzione Message Box, ecco il documento ufficiale su di esso.

Potrebbero piacerti anche i seguenti tutorial VBA di Excel:

  • Funzione di suddivisione VBA di Excel.
  • Funzione Excel VBA InStr.
  • Lavorare con celle e intervalli in Excel VBA.
  • Lavorare con i fogli di lavoro in VBA.
  • Lavorare con le cartelle di lavoro in VBA.
  • Utilizzo di loop in Excel VBA.
  • Comprensione dei tipi di dati VBA di Excel (variabili e costanti)
  • Come creare e utilizzare la cartella di lavoro macro personale in Excel.
  • Utili esempi di codici macro di Excel.
  • Utilizzo di For Next Loop in Excel VBA.
  • Eventi VBA di Excel: una guida facile (e completa).
  • Come eseguire una macro in Excel: una guida completa passo passo.
  • Come creare e utilizzare un componente aggiuntivo di Excel.

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave