Accedi per seguire   
Seguaci 0
Alexsandra

Vba : Funzione Msgbox

1 messaggio in questa discussione

La Funzione MsgBox

La funzione MsgBox() ci permette di mostrare a video un box che riporterà un avviso permettendo così all’utente di scegliere l’operazione più idonea da eseguire, questo comando ci è utile quando stiamo per mandare in esecuzione una determinata procedura e vogliamo ottenere il consenso dall’utente. Inoltre la possiamo usare nella gestione degli errori, ci può avvisare e impedire l’esecuzione di una routine che porterebbe il programma alla generazione di un errore con conseguente blocco dell’esecuzione del nostro progetto, oppure può chiederci una ulteriore conferma per operazioni “delicate” - tipo cancellazione di file - in sostanza è una funzione che ci permette di comunicare da vicino con l’applicazione che stiamo usando.

Nella Lezione 3 abbiamo visto marginalmente l’uso di Msgbox , in questa lezione cercheremo di approfondire le sue potenzialità e il suo uso, non ha una sintassi particolarmente difficile ma il suo uso “avanzato” ci permette di controllare le varie procedure e gestire tutti gli eventi che abbiamo istanziato nel nostro programma, in sostanza è una funzione di VBA abbastanza semplice da usare che riporta a video un messaggio con un’icona e dei pulsanti predefiniti, a cui si risponde premendo su uno di essi. La sintassi è la seguente:

MsgBox(prompt[, buttons] [, title] [,helpfile ,context]) oppure italianizzando il commando MsgBox(Messaggio[, Pulsanti] [, Titolo] [, Fileaiuto , Contesto]) Dove

Prompt o Messaggio : indica il messaggio che sarà visualizzato nelle finestra di dialogo.

buttons o Pulsanti : indica il valore numerico dei pulsanti da visualizzare nella finestra di dialogo.

Title o Titolo : Indica il titolo della finestra di dialogo e va scritto fra virgolette

helpfile, FileAiuto e context o Contesto : sono relativi alla guida dell’applicazione ma non sono indispensabili

Ricordiamoci che non abbiamo nessun controllo della posizione in cui verrà visualizzato il Box sullo schermo, vediamo ora qualche esempio:

Sub box1()
MsgBox "Ciao a tutti"
End Sub

Questo codice ci riporta a video un messaggio come questo

vba%25236_01.png Fig. 1

Come potete vedere abbiamo omesso alcune espressioni nella sintassi appena esposta, ma il nostro box ci appare con il testo che abbiamo inserito, e con la barra del titolo di default [Microsoft Excel], inoltre è possibile anche far apparire il box usando il valore di Variabili oppure possiamo anche usare anche una forma più evoluta e personalizzare il nostro messaggio di avviso come meglio crediamo, vediamone un esempio

Sub box2()
MsgBox "Ciao a tutti", vbCritical + vbOKOnly, "Funzione MsgBox Semplice"
End Sub

Che ci riporta a video un messaggio come questo:

vba%25236_02.png Fig. 2

Notiamo subito che è cambiato il titolo nella barra della finestra ed è comparsa un’icona rossa con una X bianca, possiamo anche cambiare tipo di icona in questo modo:

Sub box3()
MsgBox "Ciao a tutti", vbQuestion + vbOKOnly, "Funzione MsgBox Semplice"
End Sub

E ci verrà riportato a video un messaggio come questo

vba%25236_03.png Fig. 3

Vedendo i codici esposti e i vari box che ci sono apparsi possiamo dire che:

Prompt: è il messaggio che verrà visualizzato, nel nostro caso è “Ciao a tutti”

buttons : è il tipo di pulsante e relativa icona, nel nostro caso è rappresentato dal codice [vbCritical + vbOKOnly]

title : è il titolo della finestra, nel nostro caso è "Funzione MsgBox Semplice"

Ora però possiamo anche fare un altro “passo avanti” nell’uso di questa funzione, a volte è difficile ricordare tutti i comandi e potremmo usarla anche in un altro modo. Abbiamo detto poco sopra che buttons indica il valore numerico dei pulsanti da visualizzare nella finestra di dialogo, ma finora non abbiamo esposto valori numerici, abbiamo solo rappresentato i pulsanti con delle “parole chiave” tipo: [vbCritical + vbOkOnly, oppure vbQuestion + vbOkOnly ] vediamo questo aspetto modificando il codice finora usato in questo modo :

Sub box4()
MsgBox "Ciao a tutti", 0 + 16, "Funzione MsgBox Avanzata" '
End Sub

L’esecuzione di questo codice ci riporta questo avviso

vba%25236_04.png Fig. 4

Come possiamo vedere l’avviso cambia solo nel titolo che abbiamo modificato in “Funzione MsgBox Avanzata” ma il resto del Box è uguale, eppure il codice è rappresentato in maniera diversa, possiamo vedere che non compaiono più le parole chiave usate in precedenza ma abbiamo inserito dei valori numerici separati da virgole e seguiti dal titolo della finestra. A mio avviso usarla in questo modo è molto più semplice da ricordare e avremmo meno codice da scrivere. Esponiamo ora con una tabella come vengono interpretati i valori da VBA, che ci aiuterà nell’interpretazione di quanto finora esposto. L’argomento buttons indica il valore numerico dei pulsanti da visualizzare nella finestra del Box e sono così rappresentati

vba%25238_05.png Fig. 5

Sempre a questo argomento possiamo associare un’icona da visualizzare nel Box identificata da un valore numerico seguendo questa tabella:

vba%25238_06.png Fig. 6

Abbiamo detto poco sopra che la funzione MsgBox restituisce un valore, questo valore rappresenta il pulsante che abbiamo premuto, infatti come facciamo a sapere quale pulsante, e di conseguenza, quale scelta ha fatto l’utente? Ora dobbiamo fare una piccola parentesi, nelle lezioni precedenti abbiamo sempre esposto MsgBox come un semplice avviso, invece possiamo usarla anche quando dobbiamo prendere delle decisioni [vedi il ciclo IF], in pratica si sta dimostrando l’estrema versatilità di questa funzione, unica cosa è fondamentale sapere quale tasto è stato premuto dall’utente per consentire o negare l’esecuzione di una procedura.

A questo punto non diventa solo una semplice funzione che rimanda un avviso, ma prende campo un aspetto più importante, cioè può permettere l’esecuzione di una procedura oppure indicarci quale operazione stiamo per eseguire e richiedere un’ulteriore conferma. Vediamo ora con una tabella quali sono i valori che vengono restituiti da MsgBox e poi con qualche riga di codice ne vediamo il suo uso all’interno di una procedura

vba%25238_07.png Fig. 7

In base alla tabella sopra esposta possiamo dire che se l’utente preme il tasto Ok il valore restituito sarà 1, mentre se preme il pulsante Yes il valore restituito sarà 6, di conseguenza possiamo usare la funzione MsgBox anche in altri contesti diversi dal semplice avviso, ma usarla anche per operare delle scelte ed usando le Variabili – come abbiamo detto all’inizio – per ottimizzare sia la funzione ma soprattutto l’uso che ne viene fatto. Vediamo qualche esempio di codice

Sub prova()
Dim Risp As Integer
Risp = MsgBox("Prova funzione MsgBox", 1 + 64, "Funzione MsgBox Avanzata")
 If Risp = 1 Then
 MsgBox "Hai schiacciato il pulsante Ok", 1+48, "Funzione MsgBox Avanzata"
Else
Exit Sub
End If
End Sub

Con il codice sopra esposto ci compare una finestra come questa

vba%25236_10.png Fig. 8

E ciccando sul pulsante Ok ci comparirà un messaggio del genere

vba%25236_11.png Fig. 9

Credo che sia abbastanza eloquente come solo sostituendo le condizioni da verificare e le procedure da eseguire possiamo utilizzare questa funzione con scopi ben diversi dal solo avviso, ma possiamo integrarla con le scelte che andiamo ad operare nel proseguo del nostro programma, costituendo così un’ossatura stabile e logica del nostro codice sia per quanto riguarda la gestione degli errori che richiedendo conferma all’utente di quanto si appresta a fare e in base alle scelte che effettua indirizzare il flusso del programma nella direzione appropriata

Modificato da Alexsandra

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Accedi per seguire   
Seguaci 0