Articolo wiki
  • Questo articolo wiki è bloccato
Applicabile a 3761 visualizzazioni

Excel - La funzione MsgBox - VBA

Riepilogo

Livello tecnico: Conoscenza di base di Visual Basic for Applications Si applica a: Excel - Word (2000/2002/2003/2007/2010/2013)

Dettagli

NOTA. Gli esempi ed il codice sono forniti *così come sono* e l’autore declina ogni responsabilità per un loro uso scorretto. Utilizzate gli esempi forniti o file di prova per i vostri test. La correzione delle eccezioni (errori) e il controllo del tipo di dati inserito è solo parziale. I file vogliono essere un semplice esempio che illustra come sia possibile automatizzare Excel e sono forniti solo a scopo dimostrativo.

 

La prima è la classica finestra di default di tipo modale (che dobbiamo obbligatoriamente chiudere per proseguire) che possiamo richiamare in questo modo:

 

 

Figura 1: Funzione MsgBox di base

 

In questo specifico caso, abbiamo utilizzato il parametro di default della funzione, Prompt, che passa come argomento la stringa Ciao. Nella maggior parte dei casi, si è portati a non personalizzare quanto restituito dalla funzione (cioè la finestra visualizzata). Una semplice personalizzazione che migliorerebbe alquanto la *professionalità* delle nostre MsgBox, sarebbe il modificare la barra del titolo tramite la proprietà Title, mettendo  ad esempio il nostro nome. Notate come nel modulo standard crei una costante di tipo stringa pubblica, in modo che da qualsiasi punto del codice (altri moduli standard di codice, UserForm, moduli di codice dei fogli, ecc.) possa semplicemente passare come argomento al parametro Title la costante. Questo *standardizza* senza dover replicare ogni volta la stringa da passare ed evita eventuali errori, oltre a consentire di modificare una sola volta e in un unico posto in caso decida di cambiare il contenuto della stringa.

 

 

Figura 2: Funzione MsgBox con il passoggio di argomenti alle proprietà Promp e Title.

 

Per aumentare l'enfasi della MsgBox, abbiamo a disposizione il parametro Buttons che ci consente di inserire una immagine, ad esempio una i per *informazione*:

 

 

Figura 3: Funzione MsgBox con aggiunta di una immagine.

 

Il parametro Buttons consente, oltre ad aggiungere immagini, di modificare i pulsanti visibili sulla UserForm. Ad esempio:

 

 

Figura 4: Funzione MsgBox con aggiunta di una immagine e personalizzazione dei pulsanti.

 

Vediamo ora come fare per intercettare la risposta dell'utente, cioè quale è il pulsante che ha premuto. E modifichiamo la proprietà Promp e l'immagine per visualizzare qualcosa che sia più vicino a quello che troviamo nella realtà:

 

 

 

Figura 5: Funzione MsgBox con codice che intercetta la scelta dell'utente.

 

Breve commento del codice. Dichiaro una variabile di tipo Integer che raccoglierà il valore ritornato dal pulsante premuto. vbYes, vbNo, ecc., sono costanti che restituiscono appunto valori Integer. Nella guida del vb di Excel, alla voce Funzione MsgBox trovate tutti i riferimenti ai valori restituiti dalle costanti. Se utilizzate il codice esclusivamente all'interno di Excel (o di altro programma di Office), consiglio di utilizzare le costanti e non i valori restituiti, sfruttando così l'intellisense dell'editor del vb e per una maggior chiarezza.

 

 

Figura 6: Esempio dell'aiuto fornito dall'l'intellisense quando si lavora con le MsgBox.

 

Nel caso si voglia andare a capo nella stringa che passiamo al parametro Promp, possiamo utilizzare vbNewLine per *spezzare* la stringa:

 

 

Figura 6: MsgBox con testo a capo.

 

Queste sono le basi per l'utilizzo della funzione MsgBox nel vostro codice. Lascio a voi sperimentare le altre possibilità offerte dalla funzione che trovate nella guida del vb di Excel alla voce Funzione MsgBox, restando a disposizione per ogni ulteriore chiarimento.

 

Buon lavoro.

 

NOTA. Excel non dispone nativamente di procedure assolutamente sicure per impedire la visualizzazione e la modifica del codice vb e/o per la protezione dei fogli. E’ una cosa da tenere sempre presente quando si distribuiscono file con contenuti ritenuti delicati. Ricordate anche che è possibile lanciare il file di Excel senza che vengano eseguite le macro.


Risorse.

 


 Avvio Pulito di Windows
(courtesy of Microsoft MVP Franco Leuzzi)


Computer infettato da malware (courtesy of Microsoft MVP Vincenzo Di Russo)




 

 

Commenti (0)

avanzamento