Fondamenti di
programmazione II
Linguaggi di programmazione
•
Un linguaggio di programmazione è costituito, come ogni altro tipo di linguaggio, da un alfabeto con cui viene costruito un insieme di parolechiave(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 intuitivaLinguaggi di programmazione
•
Codificare un programma utilizzando il linguaggio macchina è assai arduo e richiede una conoscenza approfondita del funzionamento di un particolarecalcolatore (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à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 linguaggiomacchinae l’assembler) a quelli più evoluti (Pascal, VBA, Fortran, Cobol, Java, Perl, Python, Go, ...)
•
Il linguaggio C pone ad un livello intermedioLinguaggi di programmazione
•
La programmazione a basso livello è più ardua e meno intuitiva, ma consente di sviluppare programmi molto efficienti su uno specifico sistemahardware/software, sfruttandone a fondo le caratteristiche
•
Ad alto livello la programmazione è più “naturale” e rapida, ma è possibile che non consenta di produrre software particolarmente efficienteLinguaggi di programmazione
•
Possiamo aggregare i numerosi linguaggi di programmazione esistenti sulla base del paradigma di programmazioneche sottintendono e che è necessario adottare per utilizzarliTipi 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 delproblema)
•
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 essere definite estendendo le caratteristiche di altre classi di oggetti), polimorfismo(uno stesso 24/01/2020 7Tipi 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 corsodell'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 unindirizzo binario a 64 bit)
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#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.)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 voltaCompilatori 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”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 strettamentedipendenti 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 eseguibileChe 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 1995impose un linguaggio standard di programmazione per i suoi software a partire dall’Office: il Visual Basic for Applications.
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 aquelle di un vero compilatore dato che l'immagine compilata viene mantenuta in una cache fino a quando non varia.
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 indichinoVariabili 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.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.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 ilcontenuto 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.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.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 editarlomaiuscolo, o minuscolo, sarà sempre riscritto come viene dichiarato. Si dice che i nomi sono considerati 'case insensitive'.
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"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 StringVariabili 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.
Variabili e costanti
•
E' giunto adesso il momento di produrre una tabella riassuntiva dei tipi di dati elementari disponibiliin VBA: Tipi di dati Descrizione Dati rappresentati
Boolean Memorizza valori dell'Algebra di
Boole True oppure False
Byte Memorizza valori naturali intervallo di valori compresi tra 0 e 255 Currency Memorizza valori monetari
compresi 4 cifre decimali
Intervallo compreso tra -922... a +922...
Date Memorizza informazioni circa data e orario compreso
Dal 1 gennaio 100 al 31 dicembre 9999
Double Memorizza valori decimali a precisione doppia
Intervallo numeri negativi da -1,797679E308 a -4,94065E-324 Intervallo numeri positivi da da 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....
Object Memorizza un riferimento
all'oggetto Dipende dalla natura dell'oggetto Single Valori decimali a singola
precisione
Intervallo numeri negativi: da -3,4028... a -1,4012... Intervallo numeri positivi da 1,4012... a 3,4028...
String Memorizza stringhe alfnumeriche
Memorizza qualsiasi stringa di caratteri 24/01/2020 25
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.Procedure e funzioni
•
Le procedure•
Iniziamo esaminando la dichiarazione di una procedura:•
Sub <nome>([Parametro As <Tipo>, ...])•
...•
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).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:
Procedure e funzioni
•
Le funzioni•
La dichiarazione di una funzione è questa:•
Function <nome>([Parametro As <Tipo>, ...]) [As <Tipo>]•
...•
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 <Tipo>: 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.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,4954Assegnazioni
•
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
Assegnazioni
•
Questo permette di fare questa operazione (continua dalla slide precedente)•
x=x+7Che porterà al seguente risultato
Perché?
24/01/2020 3212
XEsempio
•
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") = ipotEsempio
•
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 inseritonella variabile)
•
Dim c1, c2, ipot As Single•
End Sub: fine programmaISTRUZIONI 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.
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 36ISTRUZIONI E PAROLE CHIAVE FONDAMENTALI
DI VBA
4.
Istruzioni di assegnazione si usano quando si devono fare calcoli e/ooperazioni.
X=Z*Y
X=Z/Y
X=X-Y
X=Sqr(Y)
X=Y^2 24/01/2020 37Che 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 è illinguaggio VBA.
Come inserisco il codice VBA in Excel?
•
Aprite la cartella di lavoro di ExcelCome 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 commandButton1Come inserisco il codice VBA in Excel?
Come inserisco il codice VBA in Excel?
•
Copiate il codice VBA (ad es. da una pagina web)Come inserisco il codice VBA in Excel?
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 lavoroCome 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“.
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".
Ambiente di sviluppo VBA
La piattaforma di sviluppo
•
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 determinatoprogetto. 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.Ambiente di sviluppo VBA
La piattaforma di sviluppo2. 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.
Istruzioni e costrutti condizionali
•
VBA utilizza il costrutto If - Then - Else per effettuare controlli.•
La sintassi base è la seguente: If condizioneThen (se vero) espressione Else (se falso)
espressione alternativa End If
Come si può implementare?
Si analizzi il seguente esempio
•
Con Excell•
SE(P>S;Pf=P*0,9;Pf=P*0,95)24/01/2020 50
P S Pf
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 ………
Dal problema al programma
•
Determinare il minimo tra tre numeri interi ( X, Y, Z)•
Come continuo? 24/01/2020 52 LEGGI (x) LEGGI (y) INIZIO LEGGI (Z)Dal problema al programma
F V V F F V LEGGI (x) LEGGI (y)X<Y
INIZIO SCRIVI (Y) LEGGI (Z)X<Z
Y<Z
SCRIVI (Z) SCRIVI (X)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<Y Then If X<Z Then Range(“A1”)=X Else Range(“A1”)=Z End If Else If Y<Z Then Range(“A1”)=Y Else Range(“A1”)=Z End If End If ……… 24/01/2020 54
Costrutti ciclici
•
Ripetizioni per veroVero Falso
Test
Costrutti ciclici
•
Ripetizioni per vero•
Istruzioni VBA ……… Do While Test Istruzioni Loop ……… Esempio: Do While X>10 X=X-1 Range(“B2”)=X Loop 24/01/2020 56Costrutti ciclici
•
Ciclo FOR:•
Si usa tutte le volte che si deve ripetere una sequenza di operazioni un numeropredeterminato e prevedibile di volte.
•
Istruzioni VBAFor Contatore (una variabile intera) = inizio TO valore finale
Istruzioni Istruzioni
Next Contatore (una variabile intera)
Esempio: ……… For i = 1 To 10 Cells(i, 5) = i ^ 2 Next i ………