Fondamenti di programmazione II - Introduzione al VBA - Informatica e tecnologie ...

Pagina creata da Laura Mauri
 
CONTINUA A LEGGERE
Fondamenti di programmazione II - Introduzione al VBA - Informatica e tecnologie ...
Fondamenti di
programmazione II
      Introduzione al VBA

                            24/01/2020   1
Fondamenti di programmazione II - Introduzione al VBA - Informatica e tecnologie ...
Linguaggi di programmazione
• Un linguaggio di programmazione è costituito, come ogni altro tipo di
  linguaggio, da un alfabeto con cui viene costruito un insieme di parole
  chiave(il vocabolario) e da un insieme di regole sintattiche(la grammatica)
  per l’uso corretto delle parole del linguaggio
• I microprocessori presenti all’interno della macchina sono stati progettati
  per riconoscere ed eseguire un insieme piuttosto ristretto di istruzioni; tali
  istruzioni costituiscono il cosiddetto linguaggio macchina
• Il linguaggio macchina è basato su una codifica estremamente compatta e
  poco intuitiva
                                                                        24/01/2020   2
Fondamenti di programmazione II - Introduzione al VBA - Informatica e tecnologie ...
Linguaggi di programmazione

•   Codificare un programma utilizzando il linguaggio macchina è assai arduo e
    richiede una conoscenza approfondita del funzionamento di un particolare
    calcolatore (o meglio: del microprocessore che costituisce la CPU della macchina)
•   Per ovviare a questo problema, che ha costituito per molti anni un grosso limite alla
    diffusione della programmazione e quindi anche dell’uso dei calcolatori, sono stati
    sviluppati dei linguaggi di programmazione più evoluti, che si pongono a metà
    strada fra il nostro linguaggio naturale ed il linguaggio macchina
•   Sono semplici e poveri(poche parole chiave, poche regole), ma privi di qualsiasi
    ambiguità
                                                                              24/01/2020   3
Fondamenti di programmazione II - Introduzione al VBA - Informatica e tecnologie ...
Linguaggi di programmazione
• In informatica si parla di programmazione a basso livello quando si utilizza un
  linguaggio molto vicino alla macchina, al suo funzionamento interno
• Si parla invece di programmazione ad alto livello quando si utilizzano linguaggi più
  sofisticati ed astratti, slegati dal funzionamento fisico della macchina
• Si viene così a creare una gerarchia di linguaggi, dai meno evoluti (il linguaggio
  macchinae l’assembler) a quelli più evoluti (Pascal, VBA, Fortran, Cobol, Java, Perl,
  Python, Go, ...)
• Il linguaggio C pone ad un livello intermedio

                                                                         24/01/2020   4
Fondamenti di programmazione II - Introduzione al VBA - Informatica e tecnologie ...
Linguaggi di programmazione
• La programmazione a basso livello è più ardua e meno intuitiva, ma consente di
  sviluppare programmi molto efficienti su uno specifico sistema
  hardware/software, sfruttandone a fondo le caratteristiche
• Ad alto livello la programmazione è più “naturale” e rapida, ma è possibile che non
  consenta di produrre software particolarmente efficiente

                                                                      24/01/2020   5
Fondamenti di programmazione II - Introduzione al VBA - Informatica e tecnologie ...
Linguaggi di programmazione
• Possiamo aggregare i numerosi linguaggi di programmazione esistenti sulla base
  del paradigma di programmazioneche sottintendono e che è necessario adottare
  per utilizzarli

                                                                   24/01/2020   6
Fondamenti di programmazione II - Introduzione al VBA - Informatica e tecnologie ...
Tipi di linguaggi di programmazione
•   Linguaggi imperativi: Il modello computazionale è basato sui cambiamenti di stato della memoria
    della macchina
•   È centrale il concetto di assegnazione di un valore ad una locazione di memoria (variabile)
•   Il compito del programmatore è costruire una sequenza di assegnazioni (spesso reiterandole più
    volte) che producano lo stato finale (in modo tale che questo rappresenti la soluzione del
    problema)
•   Linguaggi dichiarativi: Il modello computazionale è basato sui concetti di funzione e relazione
•   Il programmatore non ragiona in termini di assegnazioni di valori, ma di relazioni fra entità e di
    valori di una funzione
•   Linguaggi a oggetti: Ilmodello computazionale è basato sul concetto di classe(insieme) di oggetti
    con cui sono definite le strutture dati per la rappresentazione delle informazioni su cui opera il
    programma
•   Le funzioni e le procedure sono metodi definiti per operare su specifici oggetti
•   O Si basano sui concetti di incapsulamento(un oggetto presenta una interfaccia con cui può essere
    usato e non rende visibile la propria implementazione), ereditarietà(le classi di oggetti possono
                                                                                                    stesso7
                                                                                           24/01/2020
    essere definite estendendo le caratteristiche di altre classi di oggetti), polimorfismo(uno
    metodo può avere comportamenti diversi su oggetti di classi differenti)
Tipi di linguaggi di programmazione, Variabili

•   Una variabile, in informatica, è un contenitore di dati situato in una porzione di
    memoria destinata a contenere valori, suscettibili di modifica nel corso
    dell'esecuzione di un programma.
•   Una variabile è caratterizzata da un nome (in VBA lettere o gruppi di lettere
    minuscole).
•   Una variabile da punto di vista fisico indica (punta) una cella di memoria che può
    contenere dati.

                     a                       Celle di memoria (le celle sono individuate da un
                                             indirizzo binario a 64 bit)

                                                                                     24/01/2020   8
Tipi di linguaggi di programmazione
• Sulla base dell’ambito in cui è necessario risolvere il problema, è opportuno
  adottare un linguaggi piuttosto che un altro:
• Calcolo scientifico: Fortran, C, Python, Mathematica, Matlab
• Intelligenza Artificiale: Prolog, Lisp, Python
• Applicazioni gestionali: Cobol, SQL, C, C++, C#, VBA
• Sistemi, device driver: Assembler, C
• Applicazioni client visuali: Java, JavaScript, Visual Basic, C++, C#, C
• Applicazioni su Web: Perl, PHP, Python, ASP/ASPX, Java, JavaScript, C#, Ruby
• Applicazioni distribuite: Java, C, C++, C#
• Applicazioni mobile: Java, JavaScript, C++, C#, Swift                  24/01/2020   9
Compilatori ed interpreti
• Un programma è la codifica di un algoritmo eseguita utilizzando un linguaggio di
  programmazione
• L’unico linguaggio che la macchina è in grado di interpretare è il linguaggio
  macchina
• Per eseguire un programma scritto in un linguaggio di alto livello è necessario
  dunque tradurlo in linguaggio macchina
• Naturalmente è possibile eseguire la traduzione in modo automatico utilizzando
  un programma “traduttore” (un compilatore o un interprete)
• Ogni traduttore è in grado di interpretare e tradurre un solo linguaggio
  (compilatore C, interprete Python, compilatore Fortran, ecc.)
                                                                         24/01/2020   10
Compilatori ed interpreti
• • Interprete: itera più volte questo processo
• o Legge un’istruzione del programma “sorgente”
• o Traduce l’istruzione in linguaggio macchina
• o Esegue l’istruzione
• o Passa all’interpretazione dell’istruzione successiva
• • Al termine di questa operazione, del programma in linguaggio macchina non
  rimane alcuna traccia (la traduzione non viene memorizzata)
• • Se il programma torna più volte su una stessa istruzione, questa verrà tradotta
  (ed eseguita) ogni volta
• • È necessario disporre dell’interprete per poter eseguire il programma
                                                                        24/01/2020   11
Compilatori ed interpreti
• Compilatore: esegue una sola volta il processo
• Legge tutte le istruzioni del programma “sorgente”, ne verifica la correttezza
  sintattica e le traduce in linguaggio macchina
• Memorizza su disco il programma “eseguibile” tradotto in linguaggio macchina
• Al termine della compilazione avremo un programma “eseguibile” in linguaggio
  macchina
• La traduzione di ogni istruzione del programma avviene una sola volta, anche se
  una stessa istruzione viene ripetuta più volte all’interno del programma
• Non ho bisogno di avere il compilatore ed il “sorgente” per eseguire il programma:
  mi basta il programma “eseguibile”
                                                                        24/01/2020   12
Compilatori ed interpreti
• Il linguaggio macchina è diverso a seconda del microprocessore (il tipo di CPU)
  presente nel calcolatore
• Quindi i programmi eseguibili (in linguaggio macchina) sono strettamente
  dipendenti dalla piattaforma hardware (oltre che dal particolare sistema operativo
  adottato)
• I linguaggi di alto livello sono simili (esistono delle differenze) tra piattaforme
  differenti
• Un grande problema è la portabilità del software da una piattaforma ad un’altra:
• Se le piattaforme sono uguali o compatibili potrò distribuire il programma in
  formato eseguibile
• Se le piattaforme sono incompatibili dovrò distribuire il programma in formato
  sorgente                                                                  24/01/2020   13
Che cos’è VBA?

• Vba è l’acronimo di Visual Basic for Application e in sintesi è l’utilizzo del Visual
  Basic per la realizzazione e l’esecuzione di routine dentro l’ambiente di lavoro di
  Microsoft Office.

• Il Visual Basic è il linguaggio a oggetti realizzato da Microsoft all’inizio degli anni
  90 per la creazione di programmi per windows, il suo sistema operativo, derivato a
  sua volta dal vecchio Basic. Nel 1992 Microsoft rilasciò il Visual Basic e nel 1995
  impose un linguaggio standard di programmazione per i suoi software a partire
  dall’Office: il Visual Basic for Applications.

                                                                             24/01/2020   14
Che cos’è VBA?

• Vba è un linguaggio interpretato ma anche compilato (potremmo dire misto),
    infatti:
•   Il sorgente VB.NET è trasformato in IL (Intermediate Language) dal compilatore.
•   Il corrispondente codice IL viene trasformato in codice macchina ed eseguito dal
    compilatore JIT (Just In Time).
• Quindi le performance sono drasticamente migliori di un interprete e simili a
    quelle di un vero compilatore dato che l'immagine compilata viene mantenuta in
    una cache fino a quando non varia.

                                                                        24/01/2020   15
Variabili e costanti
• La differenza tra costanti e  variabili è questa: le costanti, come dice il nome
  stesso, una volta impostate non sono più modificabili, mentre le variabili (anche in
  questo caso il nome è illuminante) possono essere modificati ogni volta che si
  desidera.
• Ad esempio, se creiamo (tra poco vedremo come) una costante di nome Pippo e
  impostiamo il suo valore su 10, in seguito non possiamo modificarla, quindi tale
  costante varrà 10 per tutta l’esecuzione del programma. Se, invece, abbiamo una
  variabile Pluto, possiamo modificare il suo valore in ogni momento, quindi
  possiamo inizialmente assegnarli il valore 4, poi 9, poi 3, e così via.
• Un altro punto nodale in qualsiasi linguaggio di programmazione è la distinzione
  dei tipi di dato. Come è facile intuire, un programma lavora con dati di tipo
  diverso, cioè stringhe (ovvero sequenze di caratteri) e numeri; questi ultimi, poi, si
  dividono ulteriormente a seconda che siano numeri interi, decimali, che indichino
  valute, etc                                                            24/01/2020 16
Variabili e costanti
• In ogni linguaggio di programmazione che si rispetti, ci troveremo a gestire una
  classe variegata di informazioni:
   •    numeri
   •    stringhe, ossia dati alfanumerici (composto da numeri e lettere);
   •    data e ora
   •    informazioni booleane (di tipo True oppure False)
   •    tipi di dati definiti dall'utente
   •    tipi di dati strutturati (array monodimensionali e pluridimensionali)
   •   Gli array pluridimensionali sono le matrici. Gli array ad una sola dimensione sono
       detti anche vettori.
                                                                                24/01/2020   17
Variabili e costanti
• Per gestire questo mixing di informazioni, nella creazione di programmi si
  richiede la memorizzazione dei valori in variabili.

• Una variabile VBA è identificata da tre elementi:
• un nome con una serie di vincoli che poi vedremo;
• un valore;
• un tipo.
                                                                     24/01/2020   18
Variabili e costanti
•   Ai fini di rendere il codice autodocumentato dobbiamo prestare attenzione a:

1.     inserire dei commenti alle procedure che stiamo realizzando. Basta inserire prima
     del commento un segno di apostrofo. Vedrete il commento colorato di verde;
2.     all'assegnazione di nomi alle variabili. Il nome della variabile vi deve evocare il
     contenuto che andrete a memorizzare. Es. areaquadrato, arearettangolo, cognome,
     nome, datanascita;
3.     non creare variabili a casaccio. Mi sto riferendo alla dichiarazione obbligatoria delle
     variabili, in modo da generare errore quando avete utilizzato una variabile e questa
     non sia stata dichiarata.
                                                                               24/01/2020   19
Variabili e costanti

• I vincoli ai quali si è assoggettati, per l'assegnazione di un nome ad una
  variabile sono:
1.     il nome non può essere superiore ai 255 caratteri;
2.      il nome non può contenere spazi o segni di punteggiatura o caratteri
     riservati dal linguaggio stesso (es: operatori aritmetici di cui parleremo);
3.     non può iniziare con un numero.

                                                                          24/01/2020   20
Variabili e costanti

• A differenza del linguaggio C o C++, il VBA essendo di derivazione stretta del
  Visual Basic, nella scrittura del nome di una variabile, possiamo editarlo
  maiuscolo, o minuscolo, sarà sempre riscritto come viene dichiarato. Si dice
  che i nomi sono considerati 'case insensitive'.

                                                                      24/01/2020   21
Variabili e costanti
•   Le costanti si dichiarano in questo modo:
•   Const Nome [As Tipo] = valore
•   Const è una parola chiave riservata di VB che si usa per definire una costante. Nome è il nome
    che si sceglie di attribuire alla costante. Nella scelta dei nomi (sia delle costanti, delle variabili,
    ma anche delle procedure, delle funzioni e dei controlli, che vedremo più avanti), è necessario
    seguire alcune regole. I nomi non devono essere più lunghi di 40 caratteri, non posso iniziare con
    un numero nè contenere spazi e caratteri come ?, !, :, ;, . e ,.
•   Visual Basic, al contrario di altri linguaggi come il C o Java, non fa differenza tra maiuscole e
    minuscole.
•   As è un parametro opzionale che indica il Tipo di dato contenuto nella costante; se non viene
    specificato, il compilatore lo determinerà sulla base del valore assegnato alla costante stessa.
    valore è il valore vero e proprio della costante. Ecco alcuni esempi di dichiarazioni di costanti:
•   Const PI = 3.14                       Const Nome As String = "Marco"
                                                                                             24/01/2020   22
Variabili e costanti
•   Una sintassi analoga è quella che permette di dichiarare le variabili:
•   Dim nome [As Tipo]
•   In questo caso si usa la parola chiave Dim per indicare al compilatore che quella che si
    sta per definire è una variabile. Le convenzioni per il nome sono le stesse che sono state
    accennate a proposito delle costanti. Anche per le variabili il parametro As è opzionale:
    se non viene specificato, la variabile verrà dichiarata di tipo Variant, un particolare tipo
    che può contenere dati di tutti i tipi. È sconsigliabile definire variabili di tipo Variant, se
    non espressamente necessario, dal momento che questo tipo di dato occupa molta
    memoria. Ecco alcuni esempi di dichiarazioni di variabili.
•   Dim Utenti As Integer
•   Dim Nome As String, Cognome As String
                                                                                     24/01/2020   23
Variabili e costanti
•   Per dichiarare una variabile si utilizza l'istruzione Dim:
•   Dim Nome as Tipo

•   In contrapposizione con le variabili, le informazioni, che non saranno soggetti a cambiamenti nel corso di esecuzione
    dell'applicazione, sono denominate costanti

•   Per dichiarare una costante ci sono due tecniche:

•   Const nome=Valore

•   oppure

•   Const nome as Tipo=Valore

•   Questa forma permette di rendere esplicita la dichiarazione del tipo per una costante. La prima forma, anch'essa
    corretta, può essere utilizzata in virtù del fatto che i tipi delle costanti sono dedotti in base al valore assegnato.

                                                                                                          24/01/2020   24
Variabili e costanti
•   E' giunto adesso il momento di produrre una tabella riassuntiva dei tipi di dati elementari disponibili
    in VBA:                            Tipi di dati          Descrizione           Dati rappresentati
                                                              Memorizza valori dell'Algebra di
                                         Boolean                                               True oppure False
                                                              Boole
                                                                                               intervallo di valori compresi tra 0 e
                                         Byte                 Memorizza valori naturali        255
                                                              Memorizza valori monetari        Intervallo compreso tra -922... a
                                         Currency                                              +922...
                                                              compresi 4 cifre decimali
                                                              Memorizza informazioni circa     Dal 1 gennaio 100 al 31 dicembre
                                         Date                                                  9999
                                                              data e orario compreso
                                                                                               Intervallo numeri negativi da -
                                                              Memorizza valori decimali a      1,797679E308 a -4,94065E-324
                                         Double                                                Intervallo numeri positivi da da
                                                              precisione doppia
                                                                                               4,04065E-324 A 1,79679E308

                                         Integer              Valori naturali con segno        Intervallo -32.768 a + 32.767
                                         Long                 Valori naturali con segno        Intervallo -2.147.... a + 2.147....
                                                              Memorizza un riferimento
                                         Object                                                Dipende dalla natura dell'oggetto
                                                              all'oggetto
                                                                                               Intervallo numeri negativi:
                                                              Valori decimali a singola        da -3,4028... a -1,4012...
                                         Single                                                Intervallo numeri positivi
                                                              precisione
                                                                                               da 1,4012... a 3,4028...

                                                              Memorizza stringhe               Memorizza qualsiasi stringa di
                                         String                                                caratteri  24/01/2020                 25
                                                              alfnumeriche
                                                                                               Il dato rappresentato dipende dal
                                         Variant (*)          Memorizza qualsiasi tipo         tipo rappresentato.
Procedure e funzioni
• Le     procedure e le funzioni si tratta, in entrambi i casi, di una sorta di
    “raggruppamento” di istruzioni che svolgono un’operazione comune.
•   Come vedremo meglio più avanti, praticamente tutto il codice di un programma
    Visual Basic è contenuto all’interno di funzioni e procedure (chiamate
    genericamente routine).
•   La differenza fondamentale tra procedure e funzioni è che le seconde possono
    restituire dei valori, ad esempio il risultato di un’elaborazione oppure un valore
    di ritorno che determina se la routine ha avuto successo, mentre le procedure
    no.
                                                                           24/01/2020   26
Procedure e funzioni
•    Le procedure
•   Iniziamo esaminando la dichiarazione di una procedura:
•   Sub ([Parametro As , ...])
•   ...
•   End Sub
•   Tutte le dichiarazioni di procedura iniziano con la parole chiave Sub. Segue il nome
    della routine, che deve rispettare le convenzione analizzate precedente a proposito
    delle costanti. Il nome deve essere seguito da parentesi, al cui interno è possibile
    inserire i parametri (opzionali) richiesti della procedura; non c’è limite al numero di
    parametri che si possono definire. Tali parametri possono essere visti come variabili
    (ritorneremo tra poco su questo punto).
•   La scritta End Sub è composta di parole riservate di VB e indica la fine di una procedura.
                                                                                  24/01/2020   27
Procedure e funzioni
•   Le Vediamo ora un esempio di procedura, anche per illustrare meglio l’utilizzo dei parametri. Supponiamo di dover calcolare
    l’area di un cerchio: la formula è sempre la stessa, quello che cambia è solo la misura del raggio. Per tale motivo, invece di
    riscrivere ogni volta la formula, possiamo scrivere una procedura che richieda come parametro proprio la lunghezza del raggio:

•   Sub AreaCerchio(Raggio As Double)
•   …
•   End Sub
•   Supponiamo ancora di voler scrivere un programma che chiede all’utente la lunghezza del raggio e sulla base di questa calcola
    l’area del cerchio. Dopo aver definito la procedura come sopra descritto, ci basterà richiamarla passandogli come argomento la
    lunghezza del raggio; ad esempio:
•   Sub AreaCerchio(Raggio As Double)
•   ...
•   End Sub
•   Queste sono tre chiamate alla procedura con parametri diversi. Nel primo caso, Raggio varrà 5.4, nel secondo 11 e nel terzo 6.9.
    Ecco quindi come potrebbe risultare la procedura AreaCerchio completa:
•   AreaCerchio 5.4
•   AreaCerchio 11
•   AreaCerchio 6.9
•   In questo esempio è stata usata la funzione MsgBox, che visualizza un messaggio in una finestra di dialogo e attende che
    l’utente prema un tasto. A questo punto, utilizzando le tre chiamate sopra definite, otterremo questi risultati: 24/01/2020 28
Procedure e funzioni
•    Le funzioni
•   La dichiarazione di una funzione è questa:
•   Function ([Parametro As , ...]) [As ]
•   ...
•   End Function
•   Come si vede, in questo caso invece della parola chiave Sub si usa Function.
•   La cosa nuova, cui si è già accennato, è che le funzioni possono restituire un valore.
•    Nella dichiarazione, infatti, possiamo notare che, dopo l’elenco (opzionale) dei
    parametri c’è un ulteriore argomento opzionale, ancora una volta As : esso
    indica il tipo di dato restituito dalla funzione. Come per le variabili, se non viene
    specificato tale parametro il valore restituito sarà di tipo Variant.
                                                                              24/01/2020   29
Procedure e funzioni
•   Le funzioni
•   Riprendiamo l’esempio di prima e trasformiamo la procedura AreaCerchio in una funzione:
•   Function AreaCerchio(Raggio As Double) As Double
•    AreaCerchio = Raggio * Raggio * 3.14
•   End Function
•   Quando si richiama questa funzione, AreaCerchio contiene il valore dell’area del cerchio.
    Vediamo ora come si utilizzano le funzioni, basandoci come sempre sull’esempio.
•   Dim Area1 As Double, Area2 As Double, Area3 As Double
•   Area1 = AreaCerchio(5.4) 'Area1 vale 91,5624
•   Area2 = AreaCerchio(11) 'Area2 vale 379,94
•   Area3 = AreaCerchio(6.9) 'Area3 vale 149,4954

                                                                                 24/01/2020   30
Assegnazioni

• In informatica l’assegnazione è una operazione fondamentale.
• Si utilizza il simbolo di = ma non ha lo stesso significato che in algebra.
• Per esempio x=5 significa che nella cella puntata dalla variabile x inserirò il
  valore 5.

                         X
                                                5

                                                                      24/01/2020   31
Assegnazioni

• Questo permette di fare questa operazione (continua dalla slide precedente)
• x=x+7
 Che porterà al seguente risultato
                          X
                                               12

                                Perché?
                                                                     24/01/2020   32
Esempio
• Si osservi il seguente esempio.
• Private Sub CommandButton1_Click()
• Dim c1, c2, ipot As Single
• c1 = Range("B1")
• c2 = Range("B2")
• ipot = Sqr(c1 ^ 2 + c2 ^ 2)
• Range("B3") = ipot
• End Sub
                                        24/01/2020   33
Esempio
• Parole chiave nell’esempio
• Private Sub: identifica il tipo di programma.
• Dim: dichiarazione di variabile, i termini successivi sono variabili.
• As Single: identifica il tipo di variabile (il tipo di dato che può essere inserito
  nella variabile)
• Dim c1, c2, ipot As Single
• End Sub: fine programma

                                                                              24/01/2020   34
ISTRUZIONI E PAROLE CHIAVE FONDAMENTALI
                     DI VBA
1.Parole Inizio e termine programma:
 • Private Sub Prova, inizio un nuovo programma che chiamo prova
 • End Sub termino il programma.

2. DICHIARAZIONE DI VARIABILE
 • Dim X As Integer la variabile che ho chiamato X è di tipo intero. Ora in X c’è
   l’indirizzo di una locazione di memoria che può contenere dati di tipo intero.

                                                                         24/01/2020   35
ISTRUZIONI E PAROLE CHIAVE FONDAMENTALI
                       DI VBA
3. INPUT OUTPUT, inserisco o recupero dati.
 • Uso dell’istruzione Range
 Input: X=Range(“B1”), nella variabile X inserisco il contenuto della cella B1
 Output: Range (“B2”)=X, dentro la cella B2 inserisco il contenuto della variabile X
 • Uso dell’istruzione Cells, sintassi: Cells(riga,colonna). L’istruzione si usa come la Range solo
     che gli indici di riga e colonna sono entrambi numeri.
   Input: X=Cells(1,5), nella variabile X inserisco il contenuto della cella di coordinate 1,5

   Output: Cells (2,5)=X, dentro la cella di coordinate 2,5 inserisco il contenuto della variabile X

                                                                                             24/01/2020   36
ISTRUZIONI E PAROLE CHIAVE FONDAMENTALI
                       DI VBA
4. Istruzioni     di assegnazione si usano quando si devono fare calcoli e/o
    operazioni.

   X=Z*Y

   X=Z/Y

   X=X-Y

   X=Sqr(Y)

   X=Y^2
                                                                   24/01/2020   37
Che cos’è una MACRO?
• La macro è una versione automatica di una serie di istruzioni elementari per
  eseguire un compito preciso tramite un unico comando.
• Il termine macro è un’abbreviazione di macro-istruzione. L’origine della
  parola viene dal greco “μακρός” che significa lungo o largo.
• Il programma più comune per lo sfruttamento delle macro è Excel, però
  sono moltissimi i programmi che le supportano.
• Possono essere create in vari modi, un modo molto importante è il
  linguaggio VBA.
                                                                     24/01/2020   38
Come inserisco il codice VBA in Excel?
• Aprite la cartella di lavoro di Excel
• Premete Alt + F11 per aprire il Visual Basic Editor (VBE)

                                                              24/01/2020   39
Come inserisco il codice VBA in Excel?
•   Fate clic destro sul nome della vostra cartella di lavoro nel riquadro “Progetto-VBAProject” (in alto a
    sinistra della finestra dell’editor) e selezionate Inserisci -> userform dal menu di scelta rapida
•   Selezionate poi comanbotton
•   Cliccate due volte su commandButton1

                                                                                              24/01/2020   40
Come inserisco il codice VBA in Excel?

• Copiate il codice VBA (ad es. da una pagina web)

                                                     24/01/2020   41
Come inserisco il codice VBA in Excel?

• Copiate il codice VBA (ad es. da una pagina web)

                                                     24/01/2020   42
Come inserisco il codice VBA in Excel?
• Cliccate su esegui o sulla freccia verde.

                                              24/01/2020   43
Come inserisco il codice VBA in Excel?
Occorre poi procedere con questi ultimi passaggi:
•   Salvate la cartella di lavoro come “Cartella di lavoro con attivazione macro di Excel”.
•   Premete Crl + S, quindi fare clic sul pulsante “No” nella finestra di dialogo “Impossibile salvare le
    caratteristiche seguenti in cartelle di lavoro senza macro”.

•   Si aprirà la finestra di dialogo “Salva con nome”. Scegliete “Cartella di lavoro con attivazione
    macro di Excel” dall’elenco a discesa “Salva come” e fate clic sul pulsante Salva.
•   Premete Alt + Q per chiudere la finestra dell’Editor e tornare alla cartella di lavoro

                                                                                             24/01/2020   44
Come eseguire le macro VBA in Excel
Quando vorrete eseguire il codice VBA che avete aggiunto premete Alt + F8 per aprire la
finestra di dialogo “Macro”.

Quindi selezionate la macro desiderata dall’elenco “Nome macro” e fate clic sul pulsante
“Esegui“.

                                                                             24/01/2020   45
Ambiente di sviluppo VBA
L’ambiente di sviluppo di Visual Basic For Application è facilmente accessibile dal menù "Strumenti"; "Macro"; "Visual Basic Editor".
Qui avremo modo di progettare e sviluppare programmi in Visual Basic per soddisfare le nostre esigenze, in virtù del fatto che gli
strumenti sono perfettamente integrati con Microsoft Excel.
I progetti realizzabili con VBA possono essere di tre tipi:
•    Progetto di documento
•    Progetto di modello
•    Progetto di componente aggiuntivo dell’applicazione
Nei "Progetti di documento" tutti i componenti del progetto sono legati alla cartella di lavoro utilizzata al momento, e non
andranno ad intaccare ne l’applicazione Excel, ne i suoi modelli generali; quindi il codice rimarrà confinato nel file aperto. Nel
momento in cui il file cambierà posizione il nostro progetto si sposterà con esso. Di conseguenza, quando chiuderemo la nostra
cartella e ne apriremo una nuova non avremo a disposizione il progetto da noi creato.
Nei "Progetti di modello" invece il codice generato è associato al modello generale di Microsoft Excel, quindi aprendo una nuova
cartella Excel o qualsiasi cartella esistente avremo sempre a disposizione il nostro progetto VBA.
I componenti aggiuntivi sono strumenti per ampliare le funzionalità di Microsoft Excel, come, ad esempio, un comando
personalizzato richiamabile dalla barra degli strumenti o da una voce di menù. Anche questa tipologia di progetto non è legata
solamente al documento corrente ma direttamente all’applicazione Excel.
Nello specifico noi tratteremo solamente i "Progetti di documento".
                                                                                                                     24/01/2020      46
Ambiente
La piattaforma di sviluppo
                             di sviluppo VBA
• L’editor visual Basic offre numerosi strumenti avanzati di sviluppo e
  programmazione:
1.   Finestra di progetto: mostra l’elenco gerarchico dei progetti aperti e di tutti i
     moduli di codice e finestre di interfaccia appartenenti ad un determinato
     progetto. Ad ogni progetto sono associate quattro cartelle a seconda del tipo
     di modulo che viene sviluppato.
     •   Microsoft Excel oggetti: contiene il codice legato ai fogli ed alla cartella di lavoro.
     •   Form: contiene le interfaccia utente associate al progetto.
     •   Moduli: contiene i moduli di codice generici.
     •   Moduli di classe: contiene i moduli per la creazione di nuove classi di oggetti.

                                                                                             24/01/2020   47
Ambiente di sviluppo VBA
La piattaforma di sviluppo
2.   Finestra Userform (interfaccia utente): Questa finestra ci permette di creare finestre di interfaccia utente
     personalizzate da applicare ai programmi VBA, simili in tutto e per tutto a quelle proprie di Microsoft Excel.
3.   Finestra delle proprietà: mostra l’elenco, alfabetico o per categorie, di tutte le proprietà (altezza, larghezza,
     colori, font, descrizioni, ecc…) appartenenti ad un controllo contenuto in uno "UserForm" o ad uno "UserForm"
     stesso.
4.   Modulo di codice: Luogo dove viene scritto il codice Visual Basic. Esistono tre tipi di moduli di codice: generici,
     di classe e di userform.
5.   Casella degli strumenti: contiene una serie di controlli necessari per costruire l’interfaccia utente. Per spostare i
     controlli nella "UserForm" basta cliccare sull’oggetto interessato e mantenendo premuto il tasto sinistro
     trascinarlo sulla finestra Userform.
6.   Finestra immediata; Finestra Variabili locali; Finestra espressioni di controllo: Finestre usate per il Debug
     (eliminazione degli errori sintattici e logici) del codice.
7.   Visualizzatore degli oggetti: elenco di tutti gli oggetti, metodi, proprietà ed eventi appartenenti ad un
     controllo o all’applicazione Excel.

                                                                                                         24/01/2020   48
Istruzioni e costrutti condizionali

•   VBA utilizza il costrutto If - Then - Else per effettuare controlli.
•   La sintassi base è la seguente:
If condizione
Then (se vero)
espressione
Else (se falso)
espressione alternativa
End If

                                                                           24/01/2020   49
Come si può implementare?
            Si analizzi il seguente esempio

• Con Excell
• SE(P>S;Pf=P*0,9;Pf=P*0,95)
  P    S                        Pf

 100   50            SE(A2>B2;A2*0,9;A2*0,95)
                                                24/01/2020   50
Come si può implementare con VBA?
•    IL frammento di programma VBA che realizza l’algoritmo è quello sottostante, in verde i commenti.
    ……………………………
    'selezione sconto
    If P > S Then
    'se vero
    Pf = P * 0.95
    Else
    'se falso
    Pf = P * 0.9
     End If
……………………………………………………
                                                                                                    24/01/2020   51
Dal problema al programma

                                                                INIZIO

• Determinare il minimo tra tre numeri interi (   X, Y, Z)
• Come continuo?                                              LEGGI (x)

                                                              LEGGI (y)

                                                             LEGGI (Z)

                                                                          24/01/2020   52
Dal problema al programma
                         INIZIO

                       LEGGI (x)

                       LEGGI (y)

                      LEGGI (Z)

       Y
Dal problema al programma: come traduco l’algoritmo in
                        un programma?
•      Il programma potrebbe iniziare così:
Private Sub CommandButton1_Click()
Dim X, Y, Z As Single
X = Range("B1")
……………………………
If X
Costrutti ciclici

• Ripetizioni per vero
                                      Vero          Falso

                         Istruzioni          Test

                                                            24/01/2020   55
Costrutti ciclici
•   Ripetizioni per vero
•   Istruzioni VBA
…………………                             Esempio:
Do While Test                       Do While X>10
Istruzioni                          X=X-1
Loop                                Range(“B2”)=X
………………                              Loop

                                                    24/01/2020   56
Costrutti ciclici
•   Ciclo FOR:
•   Si usa tutte le volte che si deve ripetere una
    sequenza di operazioni un numero
    predeterminato e prevedibile di volte.           Esempio:
•   Istruzioni VBA                                   …………………………………
For Contatore (una variabile intera) = inizio TO     For i = 1 To 10
valore finale                                        Cells(i, 5) = i ^ 2
Istruzioni                                           Next i
Istruzioni                                           …………………………………
Next Contatore (una variabile intera)

                                                                           24/01/2020   57
Puoi anche leggere