View
344
Download
12
Category
Preview:
Citation preview
7/22/2019 Excel - Visual Basic Per Applicazioni
1/140
Viaggio attraverso laconoscenza del pi diffusolinguaggio di creazione macro
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
7/22/2019 Excel - Visual Basic Per Applicazioni
2/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Excel Visual Basic per applicazioni
Autore:
Enrico Cannoni
Prima edizione Corso on.line - Novembre 2001
Seconda edizione- Versione CD-ROM - Dicembre 2001
Copyright 2001 Manuali Net
U.R.L. www.manuali.it/
Copertina e progetto grafico di Enrico Cannoni
Ogni cura stata posta nella raccolta e nella verifica della documentazione
contenuta in questo corso. Tuttavia n lautore, n Manuali Net possonoassumersi alcuna responsabilit derivanti dallutilizzo della stesa.
Tutti i diritti sono riservati a norma di legge e a norma delle convenzioni
internazionali.Nessuna parte di questo corso pu essere riprodotta con sistemi elettronici,meccanici o altri, senza lautorizzazione scritta dellEditore.
Nomi e marchi citati nel testo sono generalmente depositati o registrati dalle
rispettive case produttrici.
7/22/2019 Excel - Visual Basic Per Applicazioni
3/140
3
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Sommario
Sommario _________________________________________________________ 3
Presentazione ______________________________________________________ 8
Informazioni preliminari_____________________________________________ 9
Cosa bisogna sapere per affrontare questo corso? _________________________ 9
Versioni di Excel __________________________________________________9
Convenzioni utilizzate ______________________________________________9
Contenuto del corso ________________________________________________ 10
PARTE 1 I ntr oduzione alle macro _______________________________________14
Lezione I - Il registratore di macro ___________________________________ 15
Prepariamoci a registrare una macro __________________________________15
Iniziamo a registrare_______________________________________________ 16
Il registratore partito _____________________________________________17
Provare la macro _________________________________________________ 17
Lezione II Riferimenti relativi ______________________________________ 19
Registrare una macro con i riferimenti relativi __________________________19
Verificare una macro con i riferimenti relativi __________________________20
Macro o Procedura________________________________________________ 21
Allarme virus ____________________________________________________21
Lezione III - Macro di navigazione ___________________________________ 22
Navigare tra fogli _________________________________________________ 22
Scorciatoie da tastiera _____________________________________________23
I pulsanti________________________________________________________ 23
Raccolta di istruzioni per la gestione dei pulsanti ________________________24
Ping Pong _______________________________________________________ 25
Lezione IV - Macro universali _______________________________________ 26
Cartella macro personale ___________________________________________26
Personal.xls _____________________________________________________27
Lezione V Barre degli strumenti ____________________________________ 29
Macro per visualizzare le barre ____________________________________29
Una nuova barra degli strumenti _____________________________________31
Rifinire i pulsanti _________________________________________________ 32
Lezione VI Moduli, la terra di nessuno_______________________________ 34
Intervallo dati denominato __________________________________________ 34
Casella combinata ________________________________________________35
Casella di controllo _______________________________________________37
Casella di selezione _______________________________________________38
7/22/2019 Excel - Visual Basic Per Applicazioni
4/140
4
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Lezione VII Un modello valutario___________________________________ 40
Euroconvert _____________________________________________________40
Predisporre la casella combinata _____________________________________41
La funzione Indice ________________________________________________42Calcolare lEuro __________________________________________________43
Vincolare la quantit ______________________________________________43
Gestire gli eccessi_________________________________________________ 44
Considerazioni ___________________________________________________45
PARTE 2 Pr imi passi nel VBA __________________________________________46
Lezione VIII LEditor di VBA______________________________________ 47
Aprire lEditor di VB ______________________________________________47
Le finestre dellEditor di VB ________________________________________48
La finestra Progetto _______________________________________________48La finestra delle Propriet __________________________________________ 49
La finestra del Codice _____________________________________________49
Lezione IX Il codice delle macro ____________________________________51
Regole generali___________________________________________________ 51
Analizzare il codice di Macro1 ______________________________________52
Analizzare il codice della macro RiferimentiRelativi _____________________ 53
Modificare il contenuto di una macro _________________________________54
I nomi delle procedure _____________________________________________55
Identare il codice _________________________________________________ 55
Le maiuscole ____________________________________________________55
Lezione X Operare delle scelte con IF______________________________ 56
Il file Comuni ____________________________________________________56
Scomporre i problemi______________________________________________ 56
Registrare la colorazione di una cella _________________________________57
Esaminare il codice della macro Colorare ______________________________ 58
Lenunciato Whit _________________________________________________ 59
Eliminare codice superfluo _________________________________________59
Colorare e scendere _______________________________________________60
SeAllora ______________________________________________________60
Lezione XI Ripetere le azioni _______________________________________62Pulsanti alternativi ________________________________________________62
Rinominare un modulo_____________________________________________ 62
I cicli___________________________________________________________ 63
Do WhileLoop _________________________________________________ 63
Do Until Loop _________________________________________________ 64
Almeno una volta _______________________________________________ 65
7/22/2019 Excel - Visual Basic Per Applicazioni
5/140
5
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Lezione XII - Le variabili ___________________________________________ 66
Definizione di variabile ____________________________________________66
Non dichiarare le variabili __________________________________________ 66
Dichiarare le variabili______________________________________________ 66Denominazione di variabili _________________________________________67
Tipo di dati delle variabili __________________________________________ 67
La notazione scientifica ____________________________________________68
Dichiarazione delle variabili e del tipo ________________________________68
Le costanti ______________________________________________________69
Portata delle variabili ______________________________________________69
Dichiarare le costanti ______________________________________________69
Lezione XIII Comunicazioni allutente_______________________________ 70
Una semplice finestra di messaggio___________________________________ 70
Gli argomenti di MsgBox___________________________________________ 70
Lezione XIV Interazione con lutente ________________________________ 74
Finestra input ____________________________________________________74
Loutput verso una cella____________________________________________ 75
Ancora sugli argomenti ____________________________________________76
Metodo InputBox _________________________________________________ 76
A capo _________________________________________________________77
Lezione XV Procedura decisionale __________________________________ 78
Variabili a portata di modulo ________________________________________78
Inserire una procedura dentro una procedura____________________________ 79Programmazione strutturata _________________________________________ 79
Decolorare ______________________________________________________80
PARTE 3 Addentrarsi nel VBA _________________________________________81
Lezione XVI Trova _______________________________________________ 82
Pulire lEditor di VB ______________________________________________82
Una macro per trovare _____________________________________________83
La guida in linea__________________________________________________ 84
Lezione XVII InputBox e Trova ____________________________________ 86
Una variabile contro la rigidit ______________________________________86
Adattare una macro preesistente _____________________________________86
Una immagine come pulsante _______________________________________87
7/22/2019 Excel - Visual Basic Per Applicazioni
6/140
6
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Lezione XVIII Gestione degli errori _________________________________ 88
Errori di linguaggio o di sintassi _____________________________________88
Errori di runtime__________________________________________________ 88
Errori logici _____________________________________________________88Il primo errore ___________________________________________________89
Ancora logica ____________________________________________________89
Un errore da runtime ______________________________________________90
Un caso ambiguo _________________________________________________ 90
Un errore ortografico ____________________________________________91
Un errore spaziale_______________________________________________ 91
Non finiscono mai ________________________________________________ 91
Lezione XIX Debug_______________________________________________ 92
Punti di interruzione_______________________________________________ 92
Effettuare il debug ________________________________________________92Intercettare gli errori di runtime______________________________________ 94
Lezione XX I forms _______________________________________________ 95
Il primo form ____________________________________________________95
Forms e pulsanti __________________________________________________ 96
Personalizzare il pulsante tramite la finestra delle Propriet. _______________ 96
Evento clic ______________________________________________________97
Pubbliche e Private________________________________________________ 98
Lezione XXI Forms: atto II ________________________________________ 99
Dare vita ad un Form ____________________________________________99Chiudere un Form _______________________________________________100
Aggiungere un altro pulsante _______________________________________100
Duplicare i pulsanti ______________________________________________101
Lezione XXII Allora Se___________________________________________ 102
Chiedere conferma _______________________________________________102
Scegliere un colore_______________________________________________ 103
I Pulsanti di opzione______________________________________________ 103
IfThenElse IfElseEnd If ___________________________________ 104
Case __________________________________________________________106
Lezione XXIII Ciclo For Next___________________________________ 107Ricavare dati da una cella _________________________________________108
Errore di Overflow _______________________________________________ 109
Proteggere e sproteggere __________________________________________ 109
Lezione XXIV Nidificare For Next_______________________________ 111
Il codice di ordinamento___________________________________________ 111
7/22/2019 Excel - Visual Basic Per Applicazioni
7/140
7
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Parte 4 Contr oll are Excel _____________________________________________113
Lezione XXV Le Function ________________________________________ 114
Tipi di routine___________________________________________________ 114
Creare una nuova funzione per Excel ________________________________114Analisi del problema _____________________________________________115
Come trovare limporto netto_______________________________________ 115
CompensoNetto _________________________________________________ 116
Lezione XXVI Manipolare i dati ___________________________________118
Costruire lesempio ______________________________________________118
Funzioni Len e Left ______________________________________________119
Ottimizzare_____________________________________________________ 120
Passare i dati ad un nuovo foglio ____________________________________121
Pulire solo se _________________________________________________ 123Lezione XXVII Auto_Apri_Chiudi _________________________________ 124
Auto_Apri _____________________________________________________124
Auto_Chiudi____________________________________________________ 125
Un po di storia __________________________________________________125
Istruzioni varie __________________________________________________125
Esempi di Auto_Apri e Auto_Chiudi_________________________________ 126
Proteggere _____________________________________________________127
Lezione XXVIII I macro virus_____________________________________ 128
Come difendersi _________________________________________________ 128
Difesa artigianale ________________________________________________129
Appendici __________________________________________________________130
Unanimazione con Excel __________________________________________ 131
Il codice _______________________________________________________ 132
Controllare la risoluzione dello schermo ______________________________ 134
Impostazioni____________________________________________________ 134
Listato_________________________________________________________ 135
Il commento del codice ___________________________________________136
File allegato ______________________________________________________ 138
Conclusioni ______________________________________________________ 139
Indice rapido_____________________________________________________ 140
7/22/2019 Excel - Visual Basic Per Applicazioni
8/140
8
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Presentazione
A partire dalla lontana versione 5.0 (1993), Excel primo fra i programmidella Microsoft, introdusse un nuovo strumento di automatizzazione, ilVisual Basic per Applicazioni.
Il VBA (acronimo di Visual Basic for Application) un vero e proprio
linguaggio di programmazione, che appartiene alla famiglia del Visual
Basic e ne possiede identica sintassi e struttura, ma a differenza diquestultimo contiene degli oggetti peculiari di un foglio elettronico.
Grazie al connubio fra Excel e il VBA stata data la possibilit, ad un gran
numero di utenti, di creare potenti sistemi informativi completamente
automatizzati, prerogativa sino a non molto tempo fa riservata ai soliprogrammatori professionisti.
La strategia della Microsoft, a partire da Office 97, ha introdotto il VBA in
tutte le sue applicazioni, in modo tale da diventare un unico linguaggio di
programmazione, nella specificit dei rispettivi ambienti di lavoro. Ci ha
favorito al massimo grado quella sinergia fra programmi, quali Excel ed
Access per esempio, da tanti invocata.
Nonostante tutte queste premesse favorevoli, in Italia il VBA non ha
incontrato il successo che ci si poteva attendere, come ad esempio ha avuto
negli Stati Uniti. Soprassedendo sulle varie ragioni culturali ed economiche,
la scarsa diffusione del VBA probabilmente da ricercare nelle difficoltche gli utenti incontrano nellapprendere la sintassi di un linguaggio di
programmazione.
Il primo passo che occorre intraprendere per rendere la curva di
apprendimento del VBA meno erta proprio quella di avvicinarvisi dal
versante di Excel, che grazie al suo Registratore di Macro rende tuttomolto pi semplice.
Il secondo passo lo compie questo corso, durante il quale si cercher di
accompagnare gli utenti con esempi pratici e concreti, senza avventurarsi in
dissertazioni e finezze teoriche, sicuramente fondamentali per unprogrammatore professionista, ma non indispensabili per un utente evolutoche vuole essere subito produttivo.
Insomma quello che vi trovate innanzi un corso di programmazione per
non programmatori grazie al quale sarete in grado di costruire applicazioni
molto potenti.
Novembre 2001
7/22/2019 Excel - Visual Basic Per Applicazioni
9/140
7/22/2019 Excel - Visual Basic Per Applicazioni
10/140
10
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Contenuto del corso
INTRODUZIONE ALLE MACRO
LEZIONE I Il registratore di macro
Prendere confidenza con il registratore di macro e verificarne il
funzionamento.
LEZIONE II Riferimenti relativi
Registrare ed eseguire una macro. Apprendere la differenza fra macro conriferimenti assoluti e macro con riferimenti relativi.
LEZIONE III Macro di navigazione
Navigare allinterno di un foglio e fra fogli. Associare le macro registrate adei pulsanti.
LEZIONE IV Macro universali
Rendere le macro sempre disponibili. I segreti di Personal.xls.
LEZIONE V Barre degli strumenti
Registrare una serie di azioni e associarle ai pulsanti di una nuova Barra
degli strumenti.
LEZIONE VI Moduli, la terra di nessuno
I controlli della Barra degli strumenti Moduli. Esaminare il funzionamento
della Casella combinata, della Casella di controllo e della Casella diselezione: controlli direttamente disponibili nel foglio di lavoro.
LEZIONE VII Un modello valutarioUtilizzando gli strumenti presentati nella precedente lezione e una buona
conoscenza del foglio elettronico costruiremo un programma di conversionedi alcune valute Europee in Euro.
7/22/2019 Excel - Visual Basic Per Applicazioni
11/140
11
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
PRIMI PASSI NEL VBA
LEZIONE VIII LEditor di VBA
Descrizione dellambiente di programmazione.
LEZIONE IX Il codice delle macro
Leggere, analizzare e modificare il codice della macro precedentementeregistrate.
LEZIONE X Operare delle scelte con IfThen
Scrivere routine che verificando determinate condizioni eseguono
operazioni diverse a seconda del risultato.
LEZIONE XI Eseguire il ciclo Do WhileLoop
Le strutture a ciclo consentano di eseguire ripetutamente una serie diistruzioni.
LEZIONE XII Le variabili
Cosa sono le variabili. Tipi di variabili. Dichiarare le variabili.
LEZIONE XIII Comunicazioni allutente
Usare MsgBox (Finestra messaggio).
LEZIONE XIV Interazione con lutente
Usare InputBox (Finestra di input)
LEZIONE XV Procedura decisionale
Usando InputBox e MsgBox creare una procedura che agisce secondo ledecisioni prese dallutente.
7/22/2019 Excel - Visual Basic Per Applicazioni
12/140
12
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
ADDENTRARSI NEL VBA
LEZIONE XVI Trova
Implementare con il VBA una procedura di ricerca.
LEZIONE XVII InputBox e Trova
Rendere pi flessibile la ricerca di un campo sfruttando le potenzialit diInputBox.
LEZIONE XVIII Gestire gli errori
Imparare ad intercettare gli errori per rendere le procedure pi professionali.
LEZIONE XIX DebugEsaminare una procedura durante lesecuzione passo passo per verificarne ilfunzionamento.
LEZIONE XX I Forms
Costruire una Finestra di dialogo.
LEZIONE XXI Forms. Atto II
Approfondire le modalit di gestione di un form.
LEZIONE XXII Allora Se
Potenziare le procedure precedentemente create con la struttura di controllo
IfThen...ElseIfElseEnd If e i Pulsanti di opzione. Ottimizzare con lastruttura di controllo Case.
LEZIONE XXIII Ciclo ForNext
For, routine da utilizzare quando si a conoscenza del numero di volte che
le istruzioni di un ciclo vanno ripetute. Il suo impiego facilita la creazionedi piccole utilit. Passare ad una procedura il valore contenuto in una cella.
LEZIONE XXIV Nidificare ForNext
Inserire un ciclo ForNext allinterno di un altro ciclo ForNext, aumentaenormemente le nostre possibilitin Excel.
7/22/2019 Excel - Visual Basic Per Applicazioni
13/140
7/22/2019 Excel - Visual Basic Per Applicazioni
14/140
14
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
PARTE 1Introduzione alle macro
In questa prima fase del corso impareremo ad usare il Registratore di
macro. Si tratta di uno strumento piuttosto limitato, ma il suo uso
rappresenta un buon trampolino di lancio per imparare a programmare con
il VBA.
Affrontando lo studio della cartella Personal.xls impareremo a rendere
globali le nostre macro.
Infine, grazie al sapiente utilizzo dei controlli offerti dalla barra degli
strumenti Moduli, impareremo a creare applicazioni sorprendenti senzausare una sola parola di codice.
Al corso allegato un file di Excel, di nome Comuni, contenente, oltre ai
soliti tre fogli vuoti, un foglio denominato Comuni, contenente lelenco ditutti i comuni della provincia di Torino.
A partire dalla nona lezione dovrete utilizzare i dati presenti nel foglio di
lavoro citato nel precedente paragrafo. E comunque consigliato usare lacartella di lavoro Comuni sin dalla prima lezione.
7/22/2019 Excel - Visual Basic Per Applicazioni
15/140
15
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Lezione I - Il registratore di macro
Il Registratore di Macro un mezzo per memorizzare e riutilizzare leazioni compiute con la tastiera e/o con il mouse, permettendo cos di creare
delle procedure automatizzate chiamate Macro. Le Macro eseguonosequenze di azioni molto pi rapidamente di noi.
Prepariamoci a registrare una m acro
Prima di iniziare la registrazione, dobbiamo pianificare le azioni chevorremo successivamente far eseguire alla macro, poich eventuali
ripensamenti che dovessero sopraggiungere durante la registrazione saranno
impietosamente memorizzati e quindi riprodotti dalla macro.Noi, ad esempio, vogliamo grassettare le intestazioni della tabella dati
riportata nellimmagine sottostante.
Per effettuate loperazione voluta dovremo spostarci dalla cella A1 alla
cella A3, selezionare lintervallo A3:F3 per poi cliccare sul comando
grassetta. Certo in questo caso le operazioni da effettuare sono molto
semplici, ma se la registrazione da fare ci richiedesse un buon numero di
azioni, sarebbe consigliabile effettuare una o pi prove senza avviare il
registratore. La possibilit di compiere degli errori molto alta.
NOTA: importante porre molta attenzione nelle azioni che registreremo, poich
anche la pi piccola variazione pu creare ripercussioni assolutamente
imprevedibili.
7/22/2019 Excel - Visual Basic Per Applicazioni
16/140
16
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Iniziamo a registrare
Dal menu Strumenti scegliere Macro per espandere una ulteriore tendina ecliccare sulla voceRegistra nuova macro .
Sar visualizzata una finestra di dialogo denominata Registra Macro.
In questa prima registrazione non ci soffermeremo sulle opzioni che civengono offerte, lasceremo invariato anche il poco fantasioso nome di
default Macro1.
Cliccare su OK per confermare linizio della registrazione.
7/22/2019 Excel - Visual Basic Per Applicazioni
17/140
17
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Il reg is trato re par tit o
In apparenza non sembra essere successo niente se escludiamo la presenzadi un nuovo pulsante nellarea di lavoro.
Ad essere precisi il pulsante una barra degli strumenti che prende il nomediInterrompi registrazione e serve appunto a bloccare la registrazione dellamacro.
Iniziamo ad eseguire le operazioni precedentemente provate: spostarsi dalla
cella A1 alla cella A3, selezionare lintervallo A3:F3 per poi cliccare sul
comando grassetta. Infine deselezioniamo attivando la cella A2.
Finito il nostro compito stoppiamo la registrazione cliccando
sullapposito pulsante.
NOTA: Quando volete fermare la registrazione fate attenzione a non posizionarvi
sulla X, poich in tal caso chiudereste la barra degli strumenti Interrompi
registrazione, lasciando il registratore di macro beatamente acceso.
Provare la macro
Adesso verifichiamo il nostro operato.
Propedeuticamente selezioniamo nuovamente lintervallo A3:F3 e togliamo
la grassettatura, altrimenti risulter difficile valutare leffetto della nostra
prima macro
Quindi dal menu Strumenti\Macro
scegliamo la voceMacro .
7/22/2019 Excel - Visual Basic Per Applicazioni
18/140
7/22/2019 Excel - Visual Basic Per Applicazioni
19/140
19
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Lezione II Riferimenti relativi
Registrare una m acro co n i r i fer iment i relat iv i
Iniziamo a registrare una seconda macro, avendo avuto cura di eliminare
leventuale grassettatura dalle intestazioni della tabella e di posizionarsi
sulla cella A1.
Dal menu Strumenti scegliere Macro per espandere una ulteriore
tendina e cliccare sulla voceRegistra nuova macro .
Questa volta sostituiamo il nomepredefinito Macro2 con il nuovo nome
RiferimentiRelativi.
Quindi clicchiamo su OK per dare inizio alla nuova registrazione.
Individuiamo nellarea di lavoro la barra degli strumenti
Interrompi registrazione e prima di effettuare una
qualsiasi azione cliccare sul pulsante Riferimento
relativo.
Spostarsi dalla cella A1 alla cella A3, selezionare lintervallo A3:F3per poi cliccare sul comando grassetta
Infine deselezionare attivando la cella A2.
Interrompiamo la registrazione cliccando sullapposito pulsante.
7/22/2019 Excel - Visual Basic Per Applicazioni
20/140
20
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Verif icare una macro con i r i fer iment i relat iv i
Posizioniamoci sulla cella A1 e dal menu Strumenti\Macro
clicchiamo sulla voce Macro per visualizzare la finestra di dialogoMacro.
Selezioniamo la nuova macro RiferimentiRelativi e clicchiamo sulpulsante Esegui.
Anche questa volta la macro eseguir il suo lavoro correttamente. Maadesso proviamo a rieseguire RiferimentiRelativi posizionando la cella
attiva in C5. Ricordiamoci di togliere preventivamente la grassettatura dalleintestazioni.
Constaterete che in questo caso la macro non ha funzionato. Vediamo di
capire il perch. La prima macro, Macro1, funziona sempre
indipendentemente dalla cella attiva al momento della sua esecuzione,
poich una macro con riferimenti assoluti; essa sa che deve iniziare in
ogni caso il suo lavoro dalla cella A3.Invece RiferimentiRelativi, come dice il suo nome una macro conriferimenti relativi. Durante la registrazione ci siamo spostati dalla cella A1
alla cella A3, cio siamo scesi in basso di due celle. Quindi la nostra macro,
essendo relativa, non ha registrato lo spostamento sulla cella A3, bens ha
registrato uno spostamento in basso di due celle. Pertanto essa strettamente condizionata dalla cella di partenza.
Si potrebbe dire che le macro con riferimenti assoluti sono pi sicure, ma
pi rigide potendo essere utilizzate solo in locazioni non modificabili,mentre le macro con riferimenti relativi sono flessibili ma pi difficili da
gestire. In realt le applicazioni pratiche di queste macro sonoestremamente limitate, il loro vero valore di tipo didattico e ce ne
renderemo bene conto quando passeremo ad esaminare il codice che hannogenerato nelle esercitazioni precedenti.
7/22/2019 Excel - Visual Basic Per Applicazioni
21/140
21
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Macro o Procedura
I termini Macroe Procedura, secondo alcuni autori, non sono equivalenti.Si attribuisce lappellativo macro al codice prodotto con il registratore di
macro, mentre si definisceprocedura ci che viene scritto completamente amano, senza lausilio del registratore.
In realt il codice che viene prodotto con il VBA di Excel spesso il
risultato combinato delluso del registratore e di scrittura diretta del codice:pertanto, distinguere i due termini risulterebbe alquanto pleonastico,
conseguentemente in questo corso le due definizioni saranno consideratesinonimi.
Al larme virus
Sappiamo tutti che la nostra cartella di lavoro, avendo utilizzato ilregistratore, in fase di apertura visualizzer una finestra segnalante la
presenza di macro, potenziali veicolatici di virus. Nessun allarmismo in
questo caso, clicchiamo pure su Attiva macro, ma attenzione a non
abbassare la guardia con file di altra provenienza.
7/22/2019 Excel - Visual Basic Per Applicazioni
22/140
22
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Lezione III - Macro di navigazione
In questa terza lezione continueremo ad usare il Registratore generandodelle macro che, per quanto semplici, si riveleranno anche molto utili.
Diciamo che alla fine di questa lezione , se dotati di un buon spirito
dinventiva potremo costruire un primo rudimentale sistema informativo.
Navigare tra fog l i
Spostarsi fra i fogli di lavoro di una cartella, servendosi delle appositeschede, non sempre agevole, soprattutto per gli utenti non molto avvezzi
alluso del pc. Inoltre in certi casi si preferisce disattivare la visualizzazione
delleschede, per poter cos creare una navigazione guidata tra i fogli.
Ma nel caso test prospettato, in che modo le macro possono aiutarci?
Innanzi tutto registriamo una macro che ci porti al Foglio2.
Attivare il Foglio1 poich per poter registrare
lo spostamento al Foglio2 chiaramente
indispensabile avviare la registrazione da una locazione diversa daquella di destinazione.
Portarsi sul menu Strumenti\Macro e avviare il Registratore dimacro.
Denominare la macroNavigator e confermare cliccando su OK.
Attivare il Foglio2 e interrompere laregistrazione.
Verifichiamo il funzionamento di Navigator.
Portarsi nel Foglio1.
Dal menu Strumenti\Macro scegliereMacro. Eseguire la macro denominata Navigator.
Verremo trasportati nel Foglio2.
Per, se nei nostri intendimenti vi era lobiettivo di rendere pi facile lavita degli utenti, dovremo operare qualche ulteriore accorgimento.
7/22/2019 Excel - Visual Basic Per Applicazioni
23/140
7/22/2019 Excel - Visual Basic Per Applicazioni
24/140
24
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
A questo punto, senza nullaltro fare, digitare il nuovo
nome per il pulsante che, per rendere chiara la suafunzione sar Foglio 2.
Deselezionarlo eseguendo un clic a vuoto.
Posizionando il puntatore del mouse sulla nuova creazione lo vedremotrasformarsi in una manina ad indicare la sua associazione ad una macro.
Ciccandoci sopra sarete proiettati nel Foglio2.
Raccol ta di istruzioni per la gest ione dei pulsant i
Per poter spostare, dimensionare o rinominare unpulsante devono essere presenti le maniglie.
Nel caso gli sia associata una macro cliccandoci sopra questa sar
eseguita rendendo impossibile far comparire le maniglie. In tal caso
prima di cliccare sulloggetto, tenere premuto il tasto CTRL. Non volendo associare una macro al pulsante allatto della creazione
occorrer cliccare su Annulla nella finestra di dialogo Assegnamacro.
Per associare una macro ad un pulsante cliccarci sopra con il tastodestro del mouse e dal menu contestuale scegliereAssegna macro.
7/22/2019 Excel - Visual Basic Per Applicazioni
25/140
25
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Ping Pong
Grazie al pulsante precedentemente creato possiamo attivare il Foglio2: maadesso vogliamo anche ritornare indietro, sempre utilizzando un pulsante.
Attivare il Foglio2.
Dal menu Strumenti\Macro scegliereRegistra nuova macro.
Rinominare la macro Navigator2.
Portarsi nel Foglio1 ed interrompere la registrazione.
Finita la fase di registrazione ritornare nel Foglio2.
Dalla barra degli strumenti Moduli selezionare loggetto Pulsante ecliccare in una zona vuota del foglio per generarlo.
Associargli la macro Navigator2.
Rinominare il pulsante Indietro e deselezionarlo cliccando avuoto.
A questo punto sarete in grado di passare dal Foglio1 al Foglio2 e viceversacliccando sui due pulsanti.
Per rendere pi evidente le potenzialit dellavoro svolto in questa lezione, dal menu
Strumenti scegliete la voce Opzioni, attivate la
scheda Visualizza e quindi deselezionate
lopzione Schede.
Noterete che per muoversi fra i fogli della cartella sarete obbligati a servirvi
dei pulsanti, quindi ad una navigazione guidata.
Nota: Per spostarsi da un foglio di lavoro allaltro si possono anche utilizzare le
combinazioni di tasti: CTRL+Pag , per passare al foglio successivo, o
CTRL+Pag per tornare al foglio precedente.
7/22/2019 Excel - Visual Basic Per Applicazioni
26/140
26
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Lezione IV - Macro universali
E giunto il momento di conoscere pi approfonditamente la finestra didialogoRegistra macro.
Cartel la macro personale
Tutti gli elementi della finestra di dialogo Registra macro sono di
immediata comprensione. Tutti , escludendo la voceMemorizza macro in : ,
la quale ospita un piccolo elenco di possibilitfra le quali scegliere.
Questa cartella di lavoro
o Scelta di default.
o Le macro saranno contenute nella cartella di lavoro nella
quale sono state registrate.
o Le suddette macro saranno disponibili per le altre cartelle solose la cartella che le contiene aperta.
Cartella macro personale
o
Le macro non saranno contenute nella cartella dalla quale stata effettuata la registrazione.
o Le macro saranno sempre disponibili, indifferentemente dalla
cartella aperta.
o Nelleventualit la cartella sia esportata in un altro pc, le
macro (quelle registrate con la modalit Cartella macropersonale) non saranno disponibili.
Nuova cartella di lavoro
o Opzione di scarsa utilit.
7/22/2019 Excel - Visual Basic Per Applicazioni
27/140
27
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Personal.xls
Quando registriamo una macro in modalit Cartella macro personale ,
questa non viene memorizzata nella cartella in uso, bens in una cartellanascosta che si chiama Personal.xls.
Nota : La cartella Personal.xlsnon esiste come file sino a quando non viene effettuatauna registrazione in modalit Cartella macro personale.
Ogni volta che Excel viene avviato il file Personal.xls, pur rimanendo
nascosto, viene aperto, mettendo le sue macro a disposizione delle altrecartelle aperte.
E possibile visualizzare la cartella Personal.xls
scegliendo dal menu Finestra la voce Scopri, chevisualizza lomonima finestra di dialogo.
E comunque consigliabile nascondere Personal.xlscliccando suNascondi sempre dal menuFinestra.
Nota: I macro virus che affliggano Excel hanno la consuetudine di eleggere a loro
quartiere generale Personal.xls.
7/22/2019 Excel - Visual Basic Per Applicazioni
28/140
28
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Ma dove sita la cartella Personal.xls ?
Non troppo complicato da esporre con Windows 95/98.
PERCORSO DESCRIZIONE
C:\ O altra unit disco
Programmi\
Microsoft Office\ O similare
Office\
XLStart\
Personal.xls
Pi complesso con Windows 2000.
PERCORSO DESCRIZIONE
C:\ O altra unit disco
Documents andsettings\
Enrico Cannoni\ Il nome dellutente
Dati applicazioni\Microsoft\
Excel\
XLStart\
Personal.xls
I files ospitati allinterno della directori XLStart vengono eseguiti
automaticamente allavvio di Excel.
7/22/2019 Excel - Visual Basic Per Applicazioni
29/140
29
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Lezione V Barre degli strumenti
In questa lezione vedremo come sfruttare al meglio gli strumenti dipersonalizzazione delle barre degli strumenti offerti da Excel.
Il nostro compito sar quello di creare una piccola barra degli strumenti,disponibile da tutte le cartelle del nostro computer, dalla quale richiamare le
barre di uso pi frequente.
Macro per vis ual izzare le barre
Selezionare il menu Visualizza\Barre degli strumenti e deselezionarele barre StandardeFormattazione.
Dal menu Strumenti\Macro lanciare Registra nuova macro.
Denominare la macro Standard e memorizzarla in Cartella macropersonale.
Confermare lavvio della registrazione cliccando su OK.
Dal menu Visualizza\Barre degli strumenti attivare la barra Standard.
Interrompere la registrazione.
Siccome caldamente consigliato verificare sempre il funzionamento della
macro registrata, disattivare nuovamente la barra degli strumenti Standard erichiamare la finestra di dialogoMacro dal menu Strumenti\Macro.
Nota: E interessante osservare che la macro Standard a differenza delle altre
preceduta daPersonal.xls! , il file ove ospitata.
7/22/2019 Excel - Visual Basic Per Applicazioni
30/140
30
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Selezionare Standard e cliccare sul pulsante Esegui.
La barra degli strumenti Standardsarimmediatamente ripristinata.
Nota: Nelleventualit che la macro Standard non fosse disponibile nellelenco della
finestra di dialogo Macro, prescindendo da un vostro errore, controllate che la
casellaMacro in: sia impostata su Tutte le cartell e di l avoro aperte.
Seguendo i punti da 1 a 6, precedentemente illustrati, si proceda a registrare
le macro Formattazione, Disegno e Moduli, attivanti le omonime barredegli strumenti.
7/22/2019 Excel - Visual Basic Per Applicazioni
31/140
31
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Una nuova barra degl i strum enti
Creare linvolucro della nuova barra degli strumenti unoperazione moltosemplice.
Fare clic suPersonalizza dal menu Visualizza\Barre degli strumenti.
Nella finestra di dialogo Personalizza attivare la scheda Barre deglistrumenti.
Cliccare sul pulsante Nuova .
Apparir una nuova barra degli strumenti, priva di ogni pulsante
che, salvo diversa scelta, si chiamer Personalizzata1.
Nella finestra di dialogo Personalizza scegliere la scheda Comandiper aggiungere dei pulsanti alla barra degli strumenti
Personalizzata1.
Nel riquadro di sinistra, Categorie scegliereMacro.
Dal riquadro di destra, Comandi,
trascinate Pulsante personalizzato, la
faccina che ride, allinterno della barradegli strumenti in costruzione.
7/22/2019 Excel - Visual Basic Per Applicazioni
32/140
7/22/2019 Excel - Visual Basic Per Applicazioni
33/140
33
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Per rendere questo secondo pulsante distinguibile dal primo, clicchiamoci
sopra con il tasto destro del mouse e dal menu contestuale che apparir,
posizionarsi su Cambia icona pulsante per disporre di una discreta raccoltadi icone per pulsanti.
Ripetere le operazioni descritte precedentemente anche per le macroDisegno e Moduli.
A questo punto potrete verificare che la nuova barra degli strumenti
disponibile per qualsiasi cartella di lavoro del vostro computer, o profilo pergli utilizzatori di NT.
7/22/2019 Excel - Visual Basic Per Applicazioni
34/140
34
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Lezione VI Moduli, la terra di nessuno
Generalmente si ritiene che la creazione di interfacce grafiche con casellecombinate, caselle di comando e altri controlli visivi siano unattivitesclusiva degli sviluppatori.
Con Excel possibile disporre di controlli grafici senza conoscere una sola
parola di programmazione. Tale possibilit ci data dagli strumenti
disponibili sulla barra degli strumenti Moduli, gi sperimentata nella
seconda lezione, che ci permette di inserire i suoi controlli direttamente suun foglio di lavoro.
Possiamo dire di avventurarci in un territorio inesplorato sia dagli utenti di
Excel che dai programmatori, insomma in una terra di nessuno.
Interval lo dat i d enominato
Inizieremo il nostro studio sui controlli della barra degli strumenti Moduli,prendendo in esame la Casella Combinata.
Nota: Nelleventualit non fosse chiaro di quale oggetto stiamo parlando, pensate aivari menu a tendina usati per cambiare il tipo di font e le dimensioni dei
caratteri.
Per poter vedere una Casella combinata in funzione occorre disporre di un
intervallo di dati denominato.
Partendo dalla cella A2 di un foglio intonso, si digitino i nomi dellacitt visibili nellimmagine sottostante.
Selezionare lintervallodi dati A2:A8.
Scegliere Crea dal menuInserisci\Nome.
Apparir la finestra di
dialogo Crea nomi e
dopo aver controllato
che sia selezionata lasola opzione Riga
superiore, confermare
cliccando su OK.
7/22/2019 Excel - Visual Basic Per Applicazioni
35/140
35
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Verifichiamo leffetto dellintervallo denominato test creato.
Fare clic sul pulsante della Casella del nome eselezionare il nome Citt dallintervallodellelenco a discesa.
Leffetto che si otterr sar la selezione di tut ti i
nomi di citt sottostanti letichetta Citt, chesarebbe il nome dellintervallo dati denominato.
Nota: In realt la Casella del nome non altro che una Casella combinata, quindi
lesatta dicitura sarebbe: cliccare sulla casella combinata Casella del nome.
Casel la combinata
Passiamo alla vera e propria creazione della Casella combinata.
Dal menu Visualizza\Barre degli strumenti scegliereModuli.
Sfruttando le propriet di
autoesplicazione dei pulsanti, cercareil controllo Casella combinata e
cliccarci sopra.
Posizionarsi sulla cella C4 e modellare unriquadro grande allincirca come due celle.
Fare clic con il tasto destro sulla Casella combinata or ora creata edal menu contestuale scegliere la voceFormato controllo.
7/22/2019 Excel - Visual Basic Per Applicazioni
36/140
36
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Apparir la finestra di dialogo Formato controllo ove dovremo
selezionare la scheda Controllo.
Nella casella Intervallo di input: digitare Citt, nella casella
Collegamento cella: digitare C1 e cliccare su OK.
Deselezionare loggetto cliccando a vuoto.
Cliccando sul pulsantino della Casella combinata vedremo comparire la
lista delle citt e cliccando su una di esse, ad esempio Milano, nella cellaC2 comparir il numero 2. Provando a fare clic su Firenze in C1 sar
inserito il 4.
7/22/2019 Excel - Visual Basic Per Applicazioni
37/140
37
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Cerchiamo di capire come siamo riusciti ad ottenere un simile risultato.
Digitando Citt nella casella Intervallo di input della finestra di dialogoFormato controllo, abbiamo detto alla Casella combinata:
Guarda casella che tu devi contenere lelenco di nomi corrispondente
allintervallo di dati Citt, cio Torino, Milano, Venezia ecc. .Poi, la cittche sceglier dovrai indicarla nella cella C1, la cella appunto digitata inCollegamento cella.
Ma che cosa che quel numero che compare in C1? Semplice, il numero
di posizione nellelenco dellelemento scelto. Milano il secondo, quindicorrisponde al numero 2.
Casel la di con trol lo
La Casella di controllo, altro oggetto molto diffuso, serve ad indicare se
vogliamo o non volgiamo fare una certa cosa, se vero o non vero omeglio VERO o FALSO.
Dalla barra degli strumenti Moduli
cliccare sulloggetto Casella dicontrollo.
Fare clic in corrispondenza della cella C9, sar automaticamentegenerata una Casella di controllo.
Cliccare con il tasto destro
sulla Casella di controlloper
far apparire il menu
contestuale, dal quale
selezionare Formatocontrollo.
Apparir la finestra di dialogo Formato controllo ove dovremoselezionare la scheda Controllo.
Nella casella Collegamento cella digitare B9.
Deselezionare loggetto cliccando a vuoto.
7/22/2019 Excel - Visual Basic Per Applicazioni
38/140
38
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Cliccando sulla Casella di controllo vi comparir un
segno di spunta e nella cella B9, quella indicata in
Collegamento cella, VERO. Cliccando nuovamente
sulla Casella di controllo il segno di spunta sartoltoe in B9 comparir FALSO.
Casel la di selezione
Dalla barra degli strumenti Moduli cliccare sulloggetto Casella diselezione.
Fare clic in una zona vuota del foglio per generareautomaticamente una Casella di selezione.
Fare clic con il tasto destro sulla Casella di selezioneper far apparireli menu contestuale, dal quale selezionareFormato controllo.
Selezionare la scheda Controllo e digitare:
o Valore corrente 10
o Valore minimo 10
o Valore massimo 100
o Avanzamento 5
o
Collegamento cella H1 Cliccare su OK.
Deselezionare il controllo.
7/22/2019 Excel - Visual Basic Per Applicazioni
39/140
39
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Adesso cliccando sulla sezione superiore della Casella di selezione vedreteil valore in H1 aumentare di 5 in 5 sino ad un massimo di 100.
Cliccando sulla parte inferiore diminuir di 5 in 5 sino ad un minimo di 10.
Probabilmente, dopo un primo momento di soddisfazione, vi sorger undubbio. Ma a che servono questi controlli?
Portate pazienza, nella prossima lezione realizzeremo una interessanteapplicazione che ricorreragli oggetti test studiati.
Nota: Nei controlli ove si imposta un valore massimo non possibile superare 30.000.
7/22/2019 Excel - Visual Basic Per Applicazioni
40/140
40
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Lezione VII Un modello valutario
Questa lezione potrebbe risultare particolarmente impegnativa, soprattuttoper chi non fosse dotato di una adeguata conoscenza di Excel. Ma qu
cogliamo loccasione per ribadire che, soltanto chi gi conosce bene il
foglio elettronico potr trarre pieno giovamento da questo corso di VBA.
Excel dotato di una funzione, Euroconvert, in grado di convertire il
valore delle valute Europee in euro . Ma se per un utilizzatore di Excel di
medie capacit, ricorrere ad una funzione non rappresenta certo un
problema, ben diversa la situazione per quegli utenti sprovveduti di
conoscenze sul foglio elettronico.Il nostro compito sar quello di creare un programma di conversione in eurodallinterfaccia amichevole.
Euroconver t
Diamo una rapida occhiata alla sintassi delle funzione Euroconvert.
=Euroconvert(Numero ; Origine; Destinazione)
Numero Importo da convertire.
Origine Il codice ISO della moneta di origine.
Destinazione Il codice ISO della moneta di destinazione.
Nellesempio sottostante vediamo come convertire 1000 lire in euro.
=Euroconvert(1000;itl;eur)
Il risultato 0,52
Nota: Nella guida di Excel troverete tutti i ragguagli relativi alla funzione
Euroconvert.
7/22/2019 Excel - Visual Basic Per Applicazioni
41/140
41
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Predisporre la casel la com binata
Lutilizzo di una Casella combinata prevede un intervallo dati denominato.
Partendo dalla cella J2 di un foglio vuoto, digitare i dati sottostanti.
Paese Moneta CodiceISO
Francia
Italia
Paesi Bassi
Germania
Spagna
Franco
Lira
Fiorino
Marco
Peseta
frf
itl
nlg
dem
esp
Selezioniamo lintervallo di datiK2:L7.
Scegliere Crea dal menuInserisci\Nome.
Nella finestra di dialogo Crea
nomi lasciare selezionata solo
Riga superiore e confermare
cliccando su OK.
Nota: In realt abbiamo creato due intervalli
denominati, Moneta e CodiceISO.
Passiamo alla creazione di una Casella combinata.
Dal menu Visualizza\Barre degli strumenti scegliereModuli.
Sfruttando le propriet di autoesplicazione dei pulsanti cercare nellabarraModuli il controllo Casella combinata e cliccarci sopra.
Posizionarsi sulla cella E5 e modellare un riquadro grande allincirca
come due celle.
Fare clic con il tasto destro sulla Casella combinata or ora creata edal menu contestuale scegliere la voceFormato controllo.
Apparir la finestra di dialogo Formato controllo ove dovremoselezionare la scheda Controllo.
Nella casella Intervallo di input: digitare il nome dellintervallodenominato Moneta, nella casella Collegamento cella: digitare G5 e
cliccare su OK.
Deselezionare loggetto cliccando a vuoto.
7/22/2019 Excel - Visual Basic Per Applicazioni
42/140
42
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
La funzione Indice
Inseriamo nella colonna B i dati come raffigurati nellimmagine sottostante,
la quale ci lascia intuire che la moneta presente nella cella C4, Peseta,
quella scelta con la Casella combinata.
Sempre nellimmagine sottostante la Barra della formula, indicante ilcontenuto della cella C4, ci mostra la funzione Indice.
Esaminiamo brevemente anche la sintassi della funzione INDICE.
=INDICE(Intervallo dati; Riga) =INDICE(Moneta;G5)
Intervallo dati
Lintervallo denominato contenente i dati ove
vogliamo effettuare la ricerca, nel nostro casoMoneta.
Riga
La riga dellintervallo dati in corrispondenza
della quale si trova il valore desiderato. Nel
nostro esempio la Peseta il quinto elemento,
cio si trova alla quinta riga dellintervallodenominato Moneta.
Nota: La sintassi della funzione Indice ben pi articolata di quella rappresentata nei
paragrafi precedenti, ma essendo questo un corso di VBA non ci dilungheremo
oltre su di essa.
Quindi ogni qualvolta che scegliamo una valuta con la Casella combinata,
grazie alla funzioneIndice, questa viene visualizzata anche nella cella C4.
7/22/2019 Excel - Visual Basic Per Applicazioni
43/140
43
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
Calcolarel Euro
La cella C4 individua la valuta che vogliamo convertire, mentre la cella C6 adibita allinserimento della quantit della valuta scelta.
Nel nostro esempio, illustrato nellimmagine a seguire, vogliamo convertire1.000 Lire: il risultato dovr apparire nella cella C9. Per ottenere talerisultato dobbiamo inserire in C9 una funzione piuttosto complessa.
=EUROCONVERT(C6;INDICE(CodiceIso;G5);eur)
Il secondo argomento della funzione EUROCONVERT, valuta di origine,
invece di essere digitato direttamente viene passato dalla funzione INDICE,che a sua volta si avvale dellintervallo denominatoCodiceIso.
A questo punto, variando la quantit ( C6) o la moneta con la Casella
combinata, automaticamente sar calcolato limporto corrispondente inEuro.
Vincolare la quant i tVolendo impostare una quantit (C6) che non possa eccedere un
determinato valore, o pi semplicemente togliere allutente ogni onere didigitazione, possiamo ricorrere ad una Casella di selezione.
Dalla barra degli strumenti Moduli cliccare sulloggetto Casella diselezione.
Fare clic in una zona vuota del foglio per generareautomaticamente una Casella di selezione.
7/22/2019 Excel - Visual Basic Per Applicazioni
44/140
7/22/2019 Excel - Visual Basic Per Applicazioni
45/140
7/22/2019 Excel - Visual Basic Per Applicazioni
46/140
7/22/2019 Excel - Visual Basic Per Applicazioni
47/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
47
Lezione VIII LEditor di VBA
I novizi della programmazione troveranno non poche difficolt nel primoimpatto con lEditor di Visual Basic; tenete conto che anche i vecchi
utilizzatori del VBA prima maniera, cio quello risalente alle versioni 5 e 7
di Excel, trovarono ostico raccapezzarsi nel nuovo ambiente diprogrammazione.
Per questa ragione illustreremo gli elementi essenziali dellEditorda questaprima lezione dedicata ai rudimenti della programmazione.
Ap ri re l Edi tor d i VB
Nellimmagine sottostante si pu ammirare lEditordi VB
7/22/2019 Excel - Visual Basic Per Applicazioni
48/140
7/22/2019 Excel - Visual Basic Per Applicazioni
49/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
49
Nelleventualit la finestra Progetto non fosse presente, la si pu richiamaredal menu Visualizza dellEditor VB, cliccando sulla voce Gestione progetti.
La f inestra del le Propriet
La finestra delle Propriet mostra le propriet
delloggetto selezionato. Nellimmagine
desempio stiamo visualizzando le propriet delFoglio1. Provando a cliccare sul Foglio2 nella
finestra del Progetto vedremo la finestra delle
Propriet aggiornarsi al nuovo elemento
selezionato.
Nelleventualit la finestra delle Proprietnon fosse presente, la si pu richiamaredal menu Visualizza dellEditor VB,
cliccando sulla voceFinestra Propriet.
La f inestra del Codice
La terza sottofinestra, quella del Codice, nellimmagine raffigurante
lEditornon presente, al suo posto vediamo uno spazio vuoto grigio. Ci dovuto al fatto che in una nuova cartella di lavoro non ancora presente ilcodice, quindi a meno di richiamarla esplicitamente, la finestra del Codicenon visibile.
Per richiamare la finestra del Codice, vi sono vari sistemi, tra i quali fareclic sul menuInserisci/Modulo.
Ma se andiamo ad aprire la cartella di lavoro Comuni, ove abbiamo
eseguito le prime registrazioni, scopriremo una situazione sensibilmentediversa.
7/22/2019 Excel - Visual Basic Per Applicazioni
50/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
50
La finestra del Progetto presenta degli elementi
aggiuntivi, tipo la cartella Moduli, allinternodella quale troviamo Modulo1 e Modulo2.
Ancora pi evidente la presenza della finestra del Codice con del codiceallinterno.
Nota: LEditor di Visual Basic sicuramente ben pi complesso di quello che pu
apparire dalla nostra breve chiacchierata, ma senza appesantimenti teorici
che, rischierebbero di scoraggiarci, gli elementi appresi in questa lezione sono
sufficienti ad orientarci nel suo interno.
7/22/2019 Excel - Visual Basic Per Applicazioni
51/140
7/22/2019 Excel - Visual Basic Per Applicazioni
52/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
52
Anal izzare i l codic e di Macro1
La macro registrava le azioni di selezionare lintervallo di celle A3:F3, digrassettarlo e infine di deselezionare attivando la cella A2.
Range("A3:F3").Select Seleziono le celle da A3 a F3
Selection.Font.Bold = True La selezione deve essere grassettata? Vero.
Range("A2").Select Seleziono la cella A2 per deselezionare.
Per rendere pi comprensibile la trasposizione del codice, in linguaggio
corrente si un po sacrificata la struttura sintattica. In VBA, loggettoprecede lazione.
Range("A2") = oggettoSelect = azione (verbo)
E come se nel parlare di tutti i giorni invece di dire Bevo il caff,dicessimo Il caff bevo.
Qual il vantaggio di una simile bizzarria linguistica? Una volta
selezionato un oggetto possiamo compiere su di esso innumerevoli azionisenza dover riselezionare continuamente lo stesso oggetto.
Per restare nellesempio del caff come se dicessimo: Il caff bevo,
acquisto, sorseggio, rovescio.
Il punto (.) funge da separatore fra loggetto e lazione
Nota: Ad essere precisi loggetto, oltre a precedere lazione, pu anche precedere la
specificazione di una sua Propriet, ossia, continuando la metafora linguistica,laggettivo. Sempre per mettere i puntini sulle i, lazione in VBA viene
chiamata Metodo.
7/22/2019 Excel - Visual Basic Per Applicazioni
53/140
7/22/2019 Excel - Visual Basic Per Applicazioni
54/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
54
Modi f icare il contenuto d i una macro
Passiamo ad esaminare .la macro Navigator, presente nel Modulo2:
Sub Navigator()Sheets("Foglio2").Select
End Sub
Con listruzione
Sheets(Foglio2).Select come se dicessimo Il foglio chiamato Foglio2 seleziona.
E intuitivo che volendo cambiare il foglio da attivare, baster riscrivere il
nome del foglio posto fra le parentesi tonde e le virgolette: ad esempioreindirizziamo la navigazione di Navigator al Foglio3.
Sheets(Foglio3).Select
Facile vero?!
Le nostre procedure di navigazione hanno un difetto per! Ci portano nel
foglio desiderato, ma non si preoccupano di controllare se il foglio visibile
dallinizio: certamente sgradevole transitare in un foglio e visualizzare lafine di una tabella.
Posizioniamoci dopo Select della macro Navigator e diamo un
INVIO per creare una riga vuota.
Spostiamo il cursore sulla riga vuota test creata e digitiamo leseguenti istruzioni:
Range("A1").Select
Laggiunta della piccola porzione di codice sopra illustrata, far s che la
macro dopo essersi spostata sul foglio desiderato, attivi la cella A1,
garantendo cos la visualizzazione del foglio dallinizio.
Nel paragrafo sottostante possiamo vedere la nuova versione di Navigator:
Sub Navigator()Sheets("Foglio3").SelectRange("A1").Select
End Sub
7/22/2019 Excel - Visual Basic Per Applicazioni
55/140
7/22/2019 Excel - Visual Basic Per Applicazioni
56/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
56
Lezione X Operare delle scelte con IF
In questa lezione impareremo a prendere delle decisioni, a scrivere delleroutine che verificano determinate condizioni ed eseguonoconseguentemente, istruzioni specifiche, in base al risultato della verifica.
Le istruzioni in VBA che controllano il flusso delle decisioni sono definitestrutture di controllo.
Mettendola un po sul mistico, potremmo dire che implementiamo le
capacitdelle nostre macro a scegliere fra il vero ed il falso: fra il bene ed ilmale.
I l f i le Comun i
Apriamo la cartella di lavoro Comuni e scegliamo lomonimo foglio,
contenente lelenco dei comuni della provincia di Torino. In particolar
modo, soffermiamoci sulla colonna F, contenente i valori relativi allapopolazione.
Il nostro compito consister nel colorare di giallo le celle contenenti unnumero di abitanti superiore al valore di 9.999: il tutto naturalmente, con unsemplice clic.
Scomporre i prob lemi
Iniziamo per gradi: il primo compito quello di capire come si fa a
colorare di giallo una cella tramite il codice VBA. La soluzione molto
semplice! Registriamo una macro che formatta di giallo lo sfondo di unacella.
7/22/2019 Excel - Visual Basic Per Applicazioni
57/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
57
Prima di iniziare la registrazione ci accerteremo che larea di lavoro non
presenti degli impedimenti, che potrebbero compromettere la qualit delcodice che sar generato.
Notiamo che le barre degli strumenti, disposte su di ununica riga cioccultano dei pulsanti, fra i quali proprio quello del Colore di riempimento.
Dal menu Visualizza\Barre degli strumenti sceglierePersonalizza.
Comparir la finestra di dialogo Personalizza, dalla qualesceglieremo la scheda Opzioni.
Mettere il segno di spunta su Mostra barre degli strumenti Standarde Formattazione su due righe.
Cliccare su OK per confermare.
Registrare la colorazione di un a cel la
Posizioniamoci su di una cella da colorare.
Lanciare il registratore di macro dal menu Strumenti\Macro\Registranuova macro.
Digitare come nome della macro Colorare e cliccare su OK per
avviare la registrazione.
Dal pulsante Colore riempimento, posto sulla barra degli
strumentiFormattazione, scegliere il colore giallo.
Interrompere la registrazione cliccando sulpulsanteInterrompi registrazione.
7/22/2019 Excel - Visual Basic Per Applicazioni
58/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
58
Esaminare i l codice del la macro Colo rare
Nella precedente lezione abbiamo visto che per visualizzare il codice di una
macro, occorre richiamare lEditor di VB: risultato ottenibile anche dalla
finestra di dialogoMacro, richiamabile dal menu Strumenti\Macro\Macro.Una volta visualizzata la finestra Macro, selezionare la macro Colorare e
cliccare sul pulsante Modifica, per essere immediatamente proiettati
nellambiente di programmazione
ove possibile ammirare la sintassi generata per colorare una cella digiallo.
Questa volta il codice si presenta meno intuitivo degli esempi precedenti,complicato dalla presenza dellenunciato Whit.
Sub Colorare()With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolidEnd With
End Sub
7/22/2019 Excel - Visual Basic Per Applicazioni
59/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
59
Lenunc iato Whit
Lenunciato Whit, traducibile in con, serve a rendere pi veloce
lesecuzione della macro, ma non indispensabile. Rivediamo la procedura
Colorare senza Whit.
Sub Colorare()Selection.Interior.ColorIndex = 6Selection.Interior.Pattern = xlSolid
End Sub
Le due righe di codice cos trasformate si possono leggere:
Selezione interna colora di giallo
Selezione interna trama solida
Mentre il codice originale cos traducibile:
Con selezione interna
colora di giallo
trama solida
Fine con
Appare evidente che in presenza di molti attributi il codice racchiuso
dallenunciato Whit diventa pi conciso, pi veloce.
El iminare codice su perf luo
In molti casi ilRegistratore di macro registra tutte le possibili impostazioni,
anche quando se ne modificano solo una o due. Eliminando le impostazioninon necessarie la macro risultersemplificata e pi veloce.
Nella macro Colorare lunica propriet che vogliamo modificare il
colore, quindi la tipologia di trama eliminabile. Il risultato della suddettacolorazione una macro estremamente leggera.
Sub Colorare()Selection.Interior.ColorIndex = 6 6 significa giallo
End Sub
Notate il commento che ricorda che al numero 6 corrisponde il giallo.
7/22/2019 Excel - Visual Basic Per Applicazioni
60/140
7/22/2019 Excel - Visual Basic Per Applicazioni
61/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
61
Il controllo Ifdeve essere sempre chiuso da End If, ad eccezione di macrocon struttura che si sviluppa su di una sola riga.
If condizione Then istruzioni
Pur dando per acquisita la conoscenza degli operatori di confronto, se nepropone una rapida carrellata.
OPERATORI di CONFRONTO
MAGGIORE > DIVERSO
MINORE=UGUALE = MINORE O UGUALE
7/22/2019 Excel - Visual Basic Per Applicazioni
62/140
7/22/2019 Excel - Visual Basic Per Applicazioni
63/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
63
Nella finestra dellePropriet, di fianco a
(Name), selezionareModulo3 e digitare iltesto alternativoModColorare.
I cicl i
Indubbiamente Colorare una macro simpatica, ma parliamoci chiaro, nonserve a niente. Gi nel nostro elenco di circa 300 records testare tutti i valorisarebbe assai uggioso, figuriamoci se ci trovassimo innanzi un database di
cinquemila o seimila records!
Dobbiamo trovare il sistema, di far scorrere da Excel tutto lelencoautomaticamente e di fermarsi, quando questi finisce.
Il VBA, dopo If Then, ci mette a disposizione unaltra tipologia distruttura di controllo: i cicli.
Le strutture a ciclo consentono di eseguire ripetutamente un blocco di
istruzioni di una macro.
Do Whi leLoop
Listruzione Do WhileLoopverifica una condizione allinizio del ciclo ese risulta vera (True) esegue le istruzioni, ripetendole fino a quando lacondizione risulta falsa (False)
Do While condizioneistruzioni
Loop
Modifichiamo la macro Colorare aggiungendovi la struttura di controlloDo While Loop.
Nota: Il codice di una macro non prevede dei numeri davanti alle righe: la
numerazione delle linee presente nel listato successivo e in altri seguenti,
stata inclusa solo per facilitare il riconoscimento e il commento della sintassi
delle procedure desempio.
7/22/2019 Excel - Visual Basic Per Applicazioni
64/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
64
1: Sub Colorare()2: Do While ActiveCell "" 'esegue se vero che diverso da vuoto 3: If ActiveCell > 9999 Then4: Selection.Interior.ColorIndex = 65: End If
6: ActiveCell.Offset(1, 0).Range("A1").Select7: Loop8: End Sub
La procedura alla riga 2 inizia testando la cella attiva ed come serecitasse:
esegui fino a quando vero che la cella attiva contiene un qualche valore
Se abbiamo avviato la macro con la cella attiva in F5, la cella chiaramente
(vero) diversa da vuota e quindi passa ad eseguire il blocco di istruzionisuccessive.
Nota: Il simbolo virgolette/virgolette () senza spazi vuoti significa vuoto; quindi
significa diverso da vuoto.
Dalla riga 3 alla riga 5 esegue le istruzioni di controllo del numero degliabitanti della citte se superiori a 9999 colora la cella di giallo.
Le istruzioni della riga 6 scendono nella cella F6.
Arrivati alla riga 7 troviamo la parola chiave Loop e ripetiamo il ciclo
partendo dalla verifica del contenuto della cella attiva, che a questo puntoabbiamo visto essere F6.
Il ciclo sar ripetuto sino a quando arrivati a F320Do While non trover pivera la condizione, poich tale cella vuota.
Do Unti l Loo p
Sub Colorare()Do Until ActiveCell = "" 'esegue se non vero che la cella
vuotaIf ActiveCell > 9999 Then
Selection.Interior.ColorIndex = 6End IfActiveCell.Offset(1, 0).Range("A1").Select
LoopEnd Sub
7/22/2019 Excel - Visual Basic Per Applicazioni
65/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
65
Do Until L oopverifica una condizione allinizio del ciclo, ed esegue il
blocco di istruzioni successive fino a quando la condizione risulta falsa, perpoi fermarsi quando la condizione diventa vera.
Entrambi i cicli funzionano perfettamente: forseDo While pi diffuso.
Almeno u na vol ta
Do While e Do Until testano sin dallinizio del ciclo ilsoddisfacimento della condizione e se tale non risultasse, non eseguirebberoneanche una volta la serie di istruzioni comprese nel loro corpo.
Attivare una cella vuota e lanciare la macro Colorare: la procedura nonscender neanche di una cella!
Si dovesse presentare la necessit di eseguire lintero ciclo di istruzioni,
almeno una volta, prima di verificare il soddisfacimento della condizione,
occorrereseguire i seguenti ritocchi al codice:
Sub Colorare()Do
If ActiveCell > 9999 ThenSelection.Interior.ColorIndex = 6
End IfActiveCell.Offset(1, 0).Range("A1").Select
Loop While ActiveCell "" 'esegue se vero che diversoda vuoto
End Sub
Sub Colorare()Do
If ActiveCell > 9999 ThenSelection.Interior.ColorIndex = 6
End IfActiveCell.Offset(1, 0).Range("A1").Select
Loop Until ActiveCell = "" ' esegue se non vero che la cella vuota
End Sub
Nota: Le strutture cicliche a volte vanno in errore ed entrano in un loop infinito. Per
uscire da una simile situazione di stallo, premere la combinazione di tasti
CTRL+INTERR .
7/22/2019 Excel - Visual Basic Per Applicazioni
66/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
66
Lezione XII - Le variabili
Questa lezione dedicata a uno degli elementi fondamentali nello studio diqualsiasi linguaggio di programmazione: le variabili.
Definizione di variabi le
Le variabili sono aree predefinite della memoria del computer, in cui
vengono archiviati i dati mentre le macro sono in esecuzione. Le variabili
risultano utili per tenere traccia di conteggi che cambiano continuamente,per conservare linput dellutente o di altra origine e per larchiviazione divalori destinati ad essere modificati da macro eseguite successivamente.
Nota: in un certo senso possiamo paragonare le variabili alle celle di Excel. Le cellesono identificabili da un riferimento, tipo A1, o ancora meglio da un nome
(cella denominata), Pippo ad esempio: nello stesso modo noi identifichiamo le
variabili attribuendogli un nome. Il contenuto della cella\variabile pu variare,
ma non il suo nome. Quindi ogni volta che si vuole fare riferimento al valore
contenuto in una determinata cella\variabile baster usare il suo nome.
Non d ichiarare le variabi l i
In VBA, quindi in VB, a differenza di linguaggi di programmazione nobilicome il C ed il Pascal, si pu decidere di non dichiarare le variabili: in
realt le controindicazioni ad una simile ipotesi sono moltissime. In questo
corso non prenderemo in considerazione tale opportunit. Anzi adesso ci
preoccuperemo di eliminare la possibilit, che una evenienza cos scellerata,
come quella di non dichiarare le variabili, possa accadere anche soloaccidentalmente.
Dal menu Strumenti dellEditor di VBA scegliere Opzioni, portarsisulla scheda Editor e porre il flag (segno di spunta) sulla scelta
Dichiarazione di variabili obbligatoria.
Dichiarare le variabi l i
La dichiarazione delle variabili, detta anche dichiarazione esplicita, si
ottiene con la parola chiave Dim (Dimensionare), collocando ladichiarazione allinizio della procedura o del modulo.
Sub NomeMacro()Dim NomeVariabile
7/22/2019 Excel - Visual Basic Per Applicazioni
67/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
67
Denom inazione di variabi l i
Nellassegnazione di nomi alle variabili, occorre seguire alcune regole didenominazione. I nomi di variabili:
Devono iniziare con una lettera.
Non possono includere punti, operatori matematici o di confronto.
Non possono superare 255 caratteri.
Devono essere univoci, almeno allinterno della procedura, o picorrettamente nellarea di validit.
Non possono coincidere con il nome di parole chiave del VBA.
Non devono essere composti da pi parole.
Tipo d i dati del le variabi l i
Quando si dichiara una variabile possibile assegnarle anche il tipo di datiche dovr contenere. Se non si specifica nessun tipo di dati, comenellesempio sopra esposto (Dim NomeVariabile), viene automaticamente
assegnato il tipo Variant. Il tipo Variant una sorta di minestrone in
grado di gestire qualsiasi tipo di dati. Ma se si desidera creare macro rapide,
e si sa che in una determinata variabile saranno sempre archiviateinformazioni dello stesso tipo di dati, consigliabile specificare il giustotipo di appartenenza.
Nome del Tipo TIPO Dimensioni IntervalloInteger Numerico 2 byte da 32.768 a 32.767
Long Numerico 4 byte da -2.147.483.648 a 2.147.483.6477
Single Numerico 4 byteda -3,402823E38 a -1,401298E-45 pervalori negativi; da 1,401298E-45 a
3,402823E38 per valori positivi.
Double Numerico 8 byte
da -1.79769313486231E308 a -4,94065645841247E-324 per valori
negativi; da 4,94065645841247E-324 a1,79769313486232E308 per valoripositivi.
Currency Numerico 8 byteda -922.337.203.685.477,5808 a922.337.203.685.477,5807
String Testo 1 byte per carattere
Boolean Logico 2 byte True o False
Date Data 4 byte dal'1 gen. 100 al 31 dic. 9999
Object Oggetto 4 byteServe ad accedere ad oggetti riconosciutidal VBA.
Variant Universale 16 b. + 1 b. x carat. Pu contenere qualsiasi tipo di dato.
7/22/2019 Excel - Visual Basic Per Applicazioni
68/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
68
La no tazione sc ient i f ica
La tabella riepilogante i tipi di dati, mostra alcuni numeri un po particolari,
la loro sequenza sembrerebbe interrotta dalla vocale E. Tale particolarit conosciuta come notazione scientifica. La notazione scientifica viene
utilizzata in genere per rappresentare numeri molto grandi o molto piccoliin un formato compatto.
1.12E-2 -0.012
2.4E10 24 000 000 000
5E9 5 000 000 000
33E-10 0.00000000033
4.3E1 43
Dichiarazione del le variabi l i e del tipo
Dim Pippo As StringDimensioniamo la variabile di nome Pippo come tipo stringa: detta in altre
parole, la variabile Pippo potrcontenere del testo.
Dim Pluto As Integer
In questo secondo caso abbiamo dichiarato la variabile Pluto di tiponumerico Intero.
Dim Paperino, Archimede, Gastone As VariantIn presenza di pi variabili dello stesso tipo, possiamo dichiararle anche
sulla stessa linea.
Vediamo un piccolo esempio pratico sulluso di una variabile.
Sub Prova()Dim Pippo As Integer dichiaro una variabile di tipo numerico interoPippo = 9999 assegno alla variabile il valore 9999
If ActiveCell > Pippo Then non uso pi il valore, bens la variabileSelection.Interior.ColorIndex = 6
End IfActiveCell.Offset(1, 0).Range("A1").Select
End Sub
Probabilmente avrete notato, dopo aver scritto la parola chiave As, la
comparsa di un menu a tendina, ospitante un lungo elenco di parole chiave.Se a quel punto avete digitato la prima vocale, nel nostro esempio la i di
7/22/2019 Excel - Visual Basic Per Applicazioni
69/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
69
integer, lelenco si sar posizionato automaticamente in corrispondenza dei
termini inizianti con la i. Quindi, utilizzando il pulsante direzionale che
punta verso il basso, raggiungete integer e premete sul tasto SHIFT per
convalidare la scelta.
Le costant i
Le procedure spesso includono valori che non variano e che ricorrono pivolte: in questo caso si utilizzano le costanti.
Una costante unarea predefinita della memoria, alla quale viene attribuito
un nome e che sostituisce un numero o una stringa non soggetti amodifiche.
Le costanti sembrano simili alle variabili, in realt non possibilemodificarle o assegnarvi nuovi valori.
Portata del le variabi l i
Portata lambito entro cui una variabile accessibile. Larea di azione diuna variabile pu essere a livello di procedura o a livello di modulo.
Una variabile dichiarata allinterno della macro una variabile a livello di
procedura e la sua portata limitata alla macro che la contiene. Per
trasformarsi a livello di modulo, quindi utilizzabile da qualsiasi macro diquel modulo, una variabile deve essere dichiarata allinizio del modulo.
Dichiarare le co stanti
Const Pippo = 9999
Const Paperino = Il mattino ha loro in bocca
Notate che il testo che assegniamo alla costante delimitato dalle virgolette().
Const Pluto = #03/09/1957#Le date devono essere delimitate dai cancelletti (#....#).
7/22/2019 Excel - Visual Basic Per Applicazioni
70/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
70
Lezione XIII Comunicazioni allutente
Poter offrire allutente la possibilit di dialogare con una nostra procedura sicuramente affascinante e molto utile. In questa lezione studieremo
MsgBox, la prima delle due finestre di dialogo incorporate del VBA cheincontreremo nel nostro corso.
Una sempl ice f inestra di messaggio
Richiamare lEditordi programmazione dal menu Strumenti\Macro e nellafinestra Progetto eseguire un doppio clic per attivare il Modulo3, chedovrebbe contenere le macro Colorare e Prova.
Posizionarsi sulla prima riga vuota e dare un paio di invii per crearespazio rispetto la procedura Prova: quindi digitiare Sub Comunica() e
premere il tasto INVIO. Oltre alla creazione di una riga vuota, saranno
inserite le istruzioni di fine proceduraEnd Sub.
Sub Comunica()
End Sub
Posizionarsi sulla riga vuota presente fra lapertura e la chiusura della
macro, premere il tasto TAB e digitare le seguenti istruzioni:
MsgBox "Il mattino ha l'oro in bocca"
Eseguire Comunica, scegliendola dallelenco dellemacro presenti nella finestra di dialogo Macro:apparirlimmagine riprodotta a lato.
Per poter eseguire qualsiasi altra operazione inExcel o nellEditor di VBA obbligatorio cliccare
sul pulsante OK.
MsgBox visualizza il testo precedentemente inserito fra le virgolette ().
Gli argomenti di MsgBox
Ma adesso implementiamo il codice di Comunica.
Sub Comunica()Dim Titolo, Messaggio As String
Titolo = "Corso on line di VBA per Excel"Messaggio = "Utilizzo di MsgBox"
MsgBox Messaggio, , TitoloEnd Sub
7/22/2019 Excel - Visual Basic Per Applicazioni
71/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
71
MsgBox oltre ad un messaggio, permette anche di impostare la sua barra deltitolo, sostituendo il generico Microsoft Excel con un titolo a nostro piacere.
Mentre veniva digitato il codice, dopo la scrittura della variabile
Messaggio, contenente la comunicazione per lutente, hanno fatto la loro
comparsa due elementi contestuali: unetichetta descrittiva della sintassi di
MsgBox e una casella combinata contenente lelenco degli argomenti
inseribili in quel punto.
Ad onor del vero, letichetta (gialla) descrittiva della sintassi non molto
esplicativa per un novizio del VBA: vediamo di semplificare un po,inserendo solo gli argomenti principali.
MsgBox(Prompt, [Buttons], [Title])
Fra gli argomenti presentati, solo Prompt obbligatorio. Ci facilmentededucibile dal fatto che lunico non racchiuso fra parentesi quadre [].
Prompt largomento rappresentante il messaggio da inoltrare, che nelnostro esempio rappresentato dalla variabile Messaggio.
Buttons, sempre nel nostro esempio non stato contemplato, per non
essendo contemplata la possibilit di saltare un argomento, abbiamolasciato a sua testimonianza la doppia virgola , , .
Title il titolo che compare sulla barra del titolo della finestra messaggio,
che nel nostro caso la variabile Titolo.
Nota: Le parentesi tonde a questo stadio di utilizzo della funzione MsgBox non sono
ancora necessarie.
Aggiungiamo anche largomentoButtons, dandogli la forma di un bel puntoesclamativo.
MsgBox Messaggio, vbExclamation, Titolo
Le possibili impostazioni dellargomentoButtons sono:
7/22/2019 Excel - Visual Basic Per Applicazioni
72/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
72
Costante Valore Descrizione
vbOKOnly 0 Visualizza solo il pulsante OK.
VbOKCancel 1 Visualizza i pulsanti OK e Annulla.
VbAbortRetryIgnore 2 Visualizza i pulsanti Termina, Riprova, e Ignora.
VbYesNoCancel 3 Visualizza i pulsanti S , No e Annulla.
VbYesNo 4 Visualizza i pulsanti S e No.
VbRetryCancel 5 Visualizza i pulsanti Riprova e Annulla.
VbCritical 16 Visualizza l'icona di messaggio critico.
VbQuestion 32 Visualizza l'icona di richiesta di avviso.
VbExclamation 48 Visualizza l'icona di messaggio di avviso.
VbInformation 64 Visualizza l'icona di messaggio di informazione.
VbDefaultButton1 0 Il primo pulsante il predefinito.
VbDefaultButton2 256 Il secondo pulsante il predefinito.VbDefaultButton3 512 Il terzo pulsante il predefinito.
VbDefaultButton4 768 Il quarto pulsante il predefinito
VbApplicationModal 0
Finestra di messaggio a scelta obbligatoria
nell'applicazione. L'utente deve rispondere allafinestra di messaggio prima di poter continuare a
lavorare nell'applicazione corrente.
VbSystemModal 4096
Finestra di messaggio a scelta obbligatoria nel
sistema. Tutte le applicazioni vengono sospese fino a
quando l'utente non risponde alla finestra di
messaggio.
vbMsgBoxHelpButton 16384Aggiunge un pulsante della Guida nella finestra di
messaggio.
VbMsgBoxSetForeground 65536Specifica che la finestra di messaggio in primo
piano.
vbMsgBoxRight 524288 Il testo allineato a destra.
vbMsgBoxRtlReading 1048576Specifica che il testo viene visualizzato da destra asinistra per i sistemi ebraico e arabo.
Il primo gruppo di valori (0-5) descrive il numero e il tipo dei pulsanti visualizzati nellafinestra di messaggio. Il secondo gruppo (16, 32, 48, 64) descrive lo stile dell'icona. Il terzogruppo (0, 256, 512, 768) determina il pulsante predefinito e il quarto gruppo (0, 4096)
determina se la finestra di messaggio a scelta obbligatoria nell'applicazione o nel sistema.Quando si sommano dei numeri per la creazione di un valore finale dell'argomento buttons,
utilizzare soltanto un numero per ciascun gruppo.
Nota: Il contenuto di questa pagina tratto dalla guida del VBA di Excel.
7/22/2019 Excel - Visual Basic Per Applicazioni
73/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
73
Infine osserviamo la possibilit di inserire pi argomenti Buttons nellastessa finestra messaggio.
MsgBox Messaggio , vbYesNo + vbExclamation, Titolo
Ma se la finestra messaggio serve solo a fare comunicazioni allutente,
perch in questo ultimo esempio rappresentata la possibilit di scegliere
fra S e No ?Fra non molto affronteremo anche questo lato diMsgBox.
7/22/2019 Excel - Visual Basic Per Applicazioni
74/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
74
Lezione XIV Interazione con lutente
La finestra di input, la seconda delle due finestre di dialogo incorporate delVBA, ci consente di fare un bel passo avanti nella possibilit di interagirecon i fruitori delle nostre procedure.
Finestra inpu t
La funzione InputBox permette di creare e di visualizzare una semplice
finestra di dialogo che consente limmissione di dati da parte dellutente.
Richiamare lEditor di VB dal menu Strumenti\Macro\Visual BasicEditor.
Attivare il modulo ModColorare dalla finestraProgetto.
Portarsi alla fine modulo e creare delle righe vuote con degli invii.
Digitare il codice seguente.
1: Sub Immissione()2: Dim Titolo, Messaggio As String3: Dim Contenitore As Variant4: Titolo = "Corso on line di VBA per Excel"5: Messaggio = "Digita il tuo nome"
6: Contenitore = InputBox(Messaggio, Titolo)7: MsgBox Contenitore8: End Sub
Dal menu Strumenti\Macro (Excel o Editor che sia) attivare lafinestra di dialogo Macro ed eseguire la macro Immissione.
ApparirInputBox ove occorrer digitare un nome a piacere.
Confermare cliccando su OK.
Farla sua comparsa una finestra messaggio recante il nome appenadigitato inInputBox.
7/22/2019 Excel - Visual Basic Per Applicazioni
75/140
Enrico Cannoni - Manuali.Net Tutti i diritti riservati
75
La sintassi della macro Immissione, sino alla riga 5, pressoch identica a
quella utilizzata perMsgBox. Anche qui dichiariamo delle variabili, chesaranno poi utilizzate per il titolo e per il messaggio della nostra finestra.
Abbiamo in pi la dichiarazione di una terza variabile di tipo Variant.
Le differenze con le istruzioni di MsgBox, sorgono a partire dalla sesta riga,come risulta evidente dal codice delle due funzioni messe a confronto.
MsgBox Messaggio, , Titolo Contenitore = InputBox(Messaggio, Titolo)
La differenza meno rilevante la mancanza nella riga di InputBox
delle due virgole (, ,) che in MsgBox possono essere occupatedallargomentoButtons, non presente inInputBox.
La seconda differenza, la pi importante, la presenza di una
variabile, Contenitore, ad inizio della riga relativa alla gestione diInputBox. Associamo alla variabile Contenitore loutput di
InputBox, cio la variabile Contenitore conterrci che sar digitatoinInputBox.
A questo punto il contenuto della settima riga della procedura Immissione,
dovrebbe essere chiara: MsgBox ci presenter come messaggio il contenuto
della variabile Contenitore, variabile riempita da quello che statodigitato inInputBox.
Nota: La variabile Contenitore stata dichiarata come tipo Variant, non sapendo apriori che tipo di dati potrebbero essere digitati.
Lou tput verso una cel la
Nellesempio precedente abbiamo indirizzato il valore immesso inInputBox
aMsgBox, ma volendo, possiamo anche dirigerlo verso la cella di un fogliodi lavoro.
1: Sub Immissione()2: Dim Titolo, Messaggio As String3: Dim Contenitore As Variant4: Titolo = "Corso on line di VBA per Excel"5: Messaggio = "Digita il tuo nome"6: Contenitore = InputBox(Messaggio, Titolo, Default
Recommended