Excel - Visual Basic Per Applicazioni

Embed Size (px)

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