08 – Le MACRO – Le Message Box

Oggi vedremo come creare delle finestre di dialogo dette Message Box, tramite l’uso del linguaggio VBA.

Le finestre di dialogo o di messaggio, chiamate Message Box, sono associate ad eventi decisi da noi per dare delle indicazioni, per confermare qualcosa, per avvisarci di un errore, o per permetterci di effettuare una scelta.

Per far comparire a video queste Message Box il comando utilizzato sarà Msgbox ma vediamone subito la sintassi:

MsgBox(prompt, [buttons], [title], [helpfile, context])

Prompt: identifica il messaggio che vogliamo visualizzare.

Buttons: ci permetterà di inserire delle icone sul messaggio, indicare i vari pulsanti da visualizzare od entrambe le cose.

Title: indicheremo il titolo della Message Box.

HelpFile: è un argomento che identifica il file della guida.

Context: è un valore numerico che identifica l’ID per l’argomento della Guida.

Di tutti gli argomenti che abbiamo visto l’unico ad essere obbligatorio è quello che identifica il Prompt, di conseguenza partiamo dalla struttura più semplice e vediamo insieme le varie opzioni.

Inizieremo da questo foglio di Excel giusto per avere qualche dato di partenza, quindi portiamoci nell’area di sviluppo e scriviamo la nostra macro.

Diamo il nome alla Sub che chiameremo MESSAGEBOX, quindi digitiamo:

MsgBox “Questa è una Message Box”

Premiamo F8 e questo è il risultato, abbiamo creato una finestra di dialogo in cui compare il messaggio che abbiamo scritto fra apici e quello che possiamo fare è confermare premendo il pulsante OK.


Ovviamente possiamo scrivere messaggi dal contenuto dinamico, per fare questo ci viene in aiuto la tabella sul foglio di Excel, tramite il simbolo della & aggiungeremo il contenuto della cella A1, quindi scriviamo:

MsgBox “Tabella ” & Range(“A1”)

Premiamo F8 ed ecco il risultato


Come potete vedere di default, il titolo della casella è Microsoft Excel, quindi dando un nome all’argomento facoltativo di nome Title, potremo cambiare questo campo.

Diamo OK, facciamo un copia e incolla dell’istruzione precedente e aggiungiamo il titolo, quindi scriviamo:

MsgBox “Tabella ” & Range(“A1”), , “Resoconto Fatturati”

Ho messo 2 virgole perché l’argomento Title è al terzo posto.

F8 e come possiamo vedere ora la finestra di dialogo si chiama Resoconto Fatturati


Diamo OK ed ora vediamo come scrivere un testo su più righe, sfruttando sempre il contenuto della tabella, quindi scriviamo:

MsgBox “Tabella ” & Range(“A1″) & ” mesi ” & vbNewLine & Range(“c2”) _

& vbNewLine & Range(“d2”) & vbNewLine & Range(“e2”)

Tramite il trattino basso possiamo mandare a capo la riga di codice, questo ci può servire per non avere stringhe troppo lunghe che uscirebbero dalla finestra dell’area di sviluppo.

Il comando vbNewLine fa si che il testo venga scritto su una nuova riga.


Diamo OK e vediamo una variante dell’istruzione vbNewLine usando il comando chr(10), il risultato sarà sempre quello di mandare a capo il testo.

Scriviamo:

MsgBox “Tabella ” & Chr(10) & Chr(10) & Range(“a1”)

Ho scritto 2 volte Chr(10) per lasciare una riga vuota, tra la scritta Tabella ed il valore della cella A1 ottenendo così questo risultato:


OK, facciamo uno step successivo e vediamo ora come inserire le icone di sistema nelle Message Box, partiamo dal messaggio critico, quindi scriviamo:

MsgBox “messaggio critico”, vbCritical


Proseguiamo con il messaggio informativo

MsgBox “messaggio informativo”, vbInformation


Ora è il turno dell’icona con il punto di domanda

MsgBox “messaggio con punto di domanda”, vbQuestion


Ed infine il punto esclamativo

MsgBox “messaggio con punto esclamativo”, vbExclamation


Fino ad ora abbiamo visto come unico pulsate, quello denominato OK, e l’unica operazione che ci era consentito fare era quella di confermare per far chiudere la finestra di dialogo, ma dovete sapere che possiamo mettere anche una combinazione, possiamo mettere per esempio un tasto SI ed uno NO, il quale abbinato alla condizione IF ci permetterà di effettuare delle scelte, vediamolo insieme, qui sotto scriviamo:

MsgBox “messaggio con pulsanti si no”, vbYesNo

vbYesNo dirà appunto ad Excel di inserire i 2 tasti F8 per verificare


Ovviamente non avendo dato alcuna condizione, in questo caso specifico, premere SI oppure NO non genererà alcun avvenimento, quindi vediamo come inserire la condizione IF per fare questa operazione, copiamo ed incolliamo la riga precedente, ma questa volta assegniamo il risultato ad una variabile che chiameremo box1, per questo motivo dobbiamo mettere all’interno delle parentesi la sintassi della Message Box

box1 = MsgBox(“messaggio con pulsanti si no”, vbYesNo)

Scriviamo di seguito il gruppo IF

If box1 = vbYes Then

  Range(“G1”) = “hai risposto SI”

Else

  Range(“G1”) = “hai risposto NO”

End If

Controlliamo con F8 ed ecco i due risultati


Ora senza elencare tutte le tipologie possibili vediamo un paio di altre combinazioni di pulsanti che possiamo mettere:

box2 = MsgBox(“messaggio con pulsanti OK Annulla”, vbOKCancel)


E vediamo ora una combinazione di tre pulsanti, SI, NO e Annulla

box3 = MsgBox(“messaggio con pulsanti si no annulla”, vbYesNoCancel)


Inutile dire che anche in questo cavo vale quanto indicato prima, aggiungendo la struttura IF…THEN…ELSE di cui abbiamo parlano in uno dei video precedenti, si assegnerà un comando specifico ad ogni pulsante.

Per finire facciamo un ultimo sforzo e vediamo come far apparire sia l’icona sia i pulsanti contemporaneamente nella Message Box.

Se volessimo abbinare i pulsanti OK e Annulla con l’icona esclamativa scriveremo:

MsgBox “messaggio con pulsanti OK annulla + icona punto di domanda”, vbOKCancel + vbQuestion

In seguito al comando vbOKCancel aggiungeremo un + e quindi metteremo il comando vbQuestion, F8 ed ecco il risultato:


Le possibili combinazioni sono molteplici, quindi vi consiglio di fare le vostre prove sbizzarrendovi secondo le necessità.

Nel video qui sotto trovate tutti i passaggi appena illustrati, buona visione.