Questo tutorial illustrerà come utilizzare la funzione VBA MsgBox per visualizzare le caselle di messaggio agli utenti (inclusa la casella di messaggio SìNo). Potrebbe interessarti anche il nostro articolo sugli InputBox.
Funzione MsgBox VBA
In VBA, è facile visualizzare un semplice MsgBox:
1 | MsgBox "Questa è una finestra di messaggio" |
Tuttavia, puoi fare molto di più che visualizzare una semplice finestra di messaggio OK. Esaminiamo rapidamente un esempio complicato prima di immergerci nello specifico…
VBA SìNo Casella di messaggio
Di seguito creeremo una finestra di messaggio con:
- Un titolo "Titolo casella di messaggio" e prompt "Testo"
- Un'icona punto interrogativo
- Sì / No opzioni invece di un semplice "OK"
- Pulsante predefinito = "No"
123 | Dim risposta come numero interorisposta = MsgBox("Testo", vbQuestion + vbYesNo + vbDefaultButton2, "Titolo casella messaggio") |
La messagebox restituirà vbYes o vbNo a seconda della scelta dell'utente. È quindi possibile eseguire diverse azioni in base alla scelta:
12345 | Se risposta = vbSì AlloraMsgBox "Sì"AltroMsgBox "No"Finisci se |
Nella prossima sezione ti mostreremo tutte le opzioni a tua disposizione durante la creazione di finestre di messaggio. Quindi ti presenteremo la sintassi della funzione MsgBox e infine esamineremo altri esempi di finestre di messaggio.
Opzioni casella messaggio VBA
Dai un'occhiata all'immagine qui sotto. Qui vedrai (quasi) tutte le opzioni a tua disposizione durante la creazione di finestre di messaggio. Prendi nota delle icone e dei diversi pulsanti.
Questo è uno screenshot del "MessageBox Builder" dal nostro componente aggiuntivo VBA Premium: AutoMacro. Il MessageBox Builder ti consente di progettare rapidamente la tua messagebox desiderata e di inserire il codice nel tuo modulo di codice. Contiene anche molti altri costruttori di codice, un'ampia libreria di codici VBA e un assortimento di strumenti di codifica. È un must per qualsiasi sviluppatore VBA.
Sintassi della funzione MsgBox
MsgBox( prompt [, bottoni ] [, titolo ] [, file di aiuto, contesto ] )
richiesta (richiesto) - Questo è il testo principale della casella del messaggio.
pulsanti - Scegli quali pulsanti visualizzare. Se omesso, "OKonly". Qui puoi anche specificare quale icona mostrare e il pulsante predefinito.
titolo - Il titolo nella parte superiore della finestra del messaggio. Se omesso, viene visualizzato il nome dell'applicazione corrente (es. Microsoft Excel).
file di aiuto - Specificare il file della guida a cui è possibile accedere quando l'utente fa clic sul pulsante "Aiuto". Se specificato, devi anche aggiungere il contesto (sotto)
contesto - Espressione numerica che rappresenta il numero di contesto della Guida assegnato all'argomento della Guida appropriato.
Probabilmente puoi ignorare il file di aiuto e gli argomenti di contesto. Non li ho mai visti usati.
Personalizza il titolo e il messaggio della casella di messaggio
La funzione MsgBox consente di personalizzare il titolo e i messaggi di richiesta in questo modo:
1 | Msgbox "Richiesta",,"Titolo" |
Un altro esempio:
123 | Sub MsgBoxPromptTitle()MsgBox "Passaggio 1 completato. Fare clic su OK per eseguire il passaggio 2.",, "Passaggio 1 di 5"Fine sottotitolo |
Importante! Devi ricordarti di circondare il tuo testo con citazioni.
Interruzioni di riga nella casella dei messaggi
Puoi anche aggiungere interruzioni di riga ai prompt della finestra di messaggio con "vbNewLine".
123 | Sub MsgBoxPromptTitle_NewLine()MsgBox "Passo 1 completato." & vbNewLine & "Fai clic su OK per eseguire il passaggio 2.", , "Passaggio 1 di 5"Fine sottotitolo |
Nota che usiamo il simbolo & per unire il testo. Puoi saperne di più sull'uso di & con il testo e altre opzioni per l'inserimento di interruzioni di riga nel nostro articolo sull'unione di testo.
Icone MsgBox
VBA ti dà la possibilità di aggiungere una delle quattro icone predefinite alle tue finestre di messaggio:
Icona Costante | Icona |
---|---|
vbInformazioni | ![]() |
vbCritical | ![]() |
vbDomanda | ![]() |
vbExclamation | ![]() |
La costante Icon dovrebbe essere posizionata all'interno dell'argomento del pulsante:
123 | Sub MsgBoxQuestionIcon()MsgBox "Esempio di domanda", vbQuestionFine sottotitolo |
Questo genererà la finestra di messaggio "OK" predefinita con l'icona Domanda:
Nota come quando digiti, l'editor VBA ti mostrerà le opzioni a tua disposizione:
Questo è utile perché non è necessario ricordare la sintassi esatta o i nomi di icone o pulsanti.
Ora dimostreremo ogni icona della finestra di messaggio:
Icone MsgBox - Informazioni
123 | Sub MsgBoxInformationIcon()MsgBox "Esempio di informazioni", vbInformationFine sottotitolo |
Icone MsgBox - Critiche
123 | Sub MsgBoxCriticalIcon()MsgBox "Esempio critico", vbCriticalFine sottotitolo |
Icone MsgBox - Domanda
123 | Sub MsgBoxQuestionIcon()MsgBox "Esempio di domanda", vbQuestionFine sottotitolo |
Icone MsgBox - Punto esclamativo
123 | Sub MsgBoxExclamationIcon()MsgBox "Esempio di esclamazione", vbExclamationFine sottotitolo |
Di seguito parleremo della generazione di finestre di messaggio con diversi layout di pulsanti. Se scegli un tipo di finestra di messaggio diverso, dovrai aggiungere il tipo di icona dopo i pulsanti utilizzando un "+":
123 | Sub MsgBoxQuestionIcon()MsgBox "Vuoi continuare?", vbOKCancel + vbQuestionFine sottotitolo |
Variabili MsgBox
Finora abbiamo lavorato principalmente con la finestra di messaggio predefinita "OK". La finestra del messaggio OK ha solo un'opzione: premendo 'OK' si consente al codice di continuare. Tuttavia, puoi anche specificare altri raggruppamenti di pulsanti: OK / Annulla, Sì / No, ecc.
In tal caso vorrai eseguire azioni diverse in base a quale pulsante viene premuto. Diamo un'occhiata a un esempio.
Ecco la finestra di messaggio che genereremo:
Questo è l'intero codice (lo analizzeremo in seguito):
123456789101112 | Sub MsgBoxVariable()Dim risposta come numero interorisposta = MsgBox("Vuoi continuare?", vbQuestion + vbYesNo)Se risposta = vbSì AlloraMsgBox "Sì"AltroMsgBox "No"Finisci seFine sottotitolo |
Per prima cosa assegniamo l'output del messagebox a una variabile intera.
123 | Dim risposta come numero interorisposta = MsgBox("Vuoi continuare?", vbQuestion + vbYesNo) |
Quindi usiamo un If-Else per determinare cosa fare in base a quale pulsante viene premuto:
12345 | Se risposta = vbSì AlloraMsgBox "Sì"AltroMsgBox "No"Finisci se |
La funzione MsgBox restituisce un valore intero (tra 1-7) quindi definiamo la variabile come tipo intero. Tuttavia, invece di fare riferimento al numero intero, puoi fare riferimento a una costante (es. vbOK, vbCancel, ecc.). Guarda questa tabella per vedere tutte le opzioni:
Pulsante | Costante | Valore |
---|---|---|
ok | vbOK | 1 |
Annulla | vbAnnulla | 2 |
Interrompi | vbInterrompi | 3 |
Riprova | vbRiprova | 4 |
Ignorare | vbIgnora | 5 |
sì | vbSì | 6 |
No | vbNo | 7 |
Ora dimostreremo ogni raggruppamento di pulsanti:
Casella messaggio OK - vbOKOnly
Questa è la casella di messaggio VBA standard.
123456 | Sub MsgBox_OKOnly()Dim risposta come numero interorisposta = MsgBox("OKOnly Esempio", vbOKOnly)Fine sottotitolo |
OK Annulla casella messaggio - vbOKCancel
123456789101112 | Sub MsgBox_OKCancel()Dim risposta come numero interorisposta = MsgBox("OK Annulla Esempio", vbOKCancel)Se risposta = vbOK AlloraMsgBox "OK"AltroMsgBox "Annulla"Finisci seFine sottotitolo |
Sì No Casella messaggi - vbSìNo
123456789101112 | Sub MsgBox_SìNo()Dim risposta come numero interorisposta = MsgBox("Sì No Esempio", vbSìNo)Se risposta = vbSì AlloraMsgBox "Sì"AltroMsgBox "No"Finisci seFine sottotitolo |
Sì No Annulla casella messaggio - vbSìNoCancel
1234567891011121314 | Sub MsgBox_YesNoCancel()Dim risposta come numero interorisposta = MsgBox("Sì No Annulla Esempio", vbYesNoCancel)Se risposta = vbSì AlloraMsgBox "Sì"ElseIf risposta = vbNo AlloraMsgBox "No"AltroMsgBox "Annulla"Finisci seFine sottotitolo |
Abort Retry Ignore Message Box - vbAbortRetryIgnore
1234567891011121314 | Sub MsgBox_AbortRetryIgnore()Dim risposta come numero interorisposta = MsgBox("Abort Retry Ignore Example", vbAbortRetryIgnore)Se risposta = vbAbort AlloraMsgBox "Interrompi"ElseIf risposta = vbRiprova alloraMsgBox "Riprova"AltroMsgBox "Ignora"Finisci seFine sottotitolo |
Riprova Annulla casella messaggio - vbRetryCancel
123456789101112 | Sub MsgBox_RetryCancel()Dim risposta come numero interorisposta = MsgBox("Riprova Annulla Esempio", vbRetryCancel)Se risposta = vbRiprova alloraMsgBox "Riprova"AltroMsgBox "Annulla"Finisci seFine sottotitolo |
Esempi di MessageBox VBA
Conferma della finestra di messaggio prima di eseguire la macro
Questo codice visualizzerà una casella di messaggio Sì No prima di chiamare una macro. Se si fa clic su Sì, viene chiamata la macro, se si fa clic su No, la macro non viene eseguita.
12345678 | Sub Msgbox_BeforeRunning()Dim risposta come numero interorisposta = MsgBox("Vuoi eseguire Macro1?", vbQuestion + vbYesNo)Se risposta = vbSì Allora chiama Macro1Fine sottotitolo |
Sì / No Message Box - Exit Sub
Qui confermeremo con l'utente se continuare a eseguire una macro. Se si clicca No il codice uscirà dal sub, altrimenti la procedura continuerà.
12345678910 | Sub Msgbox_BeforeRunning()Dim risposta come numero interorisposta = MsgBox("Vuoi continuare?", vbQuestion + vbYesNo)Se risposta = vbNo Allora esci da Sub"Un po' di codice"Fine sottotitolo |
Casella di messaggio VBA in Access VBA
Tutti gli esempi precedenti funzionano esattamente allo stesso modo in Access VBA come in Excel VBA.