SlideShare a Scribd company logo
1 of 113
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005
1
Modelli Finanziari nel
Tempo Continuo
1
Elementi di Programmazione in
Visual Basic per Excel
Giovanni Della Lunga
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20052
 Lavorare in Ambiente MS Excel
 Le Macro di Excel
 L’ambiente di Sviluppo del VBA
 La Sintassi del VBA
 Tipi di Dato e Operatori
 Istruzioni di Controllo
 Strutture Dati
 Procedure
 Gestire l’Interazione con Excel
 Funzioni Speciali
 Lavorare in Ambiente MS Excel
 Le Macro di Excel
 L’ambiente di Sviluppo del VBA
 La Sintassi del VBA
 Tipi di Dato e Operatori
 Istruzioni di Controllo
 Strutture Dati
 Procedure
 Gestire l’Interazione con Excel
 Funzioni Speciali
Elementi di Programmazione in Visual Basic per Excel
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20053
Lavorare in Ambiente MS Excel
 Dopo aver avviato Windows è possibile avviare EXCEL in vari
modi:
 Fare clic sul pulsante Avvio, quindi scegliere Programmi e cliccare su
Microsoft® Excel.
 Fare clic sulla relativa icona della Barra degli strumenti Office.
 Fare doppio clic su una icona di cartella ottenuta precedentemente.
 Per avviarlo in modo automatico ad ogni avvio del computer:
 Scegliere Impostazioni dal menu Avvio di Windows, quindi fare
clic su Barra delle applicazioni, sulla scheda Applicazioni del
menu Avvio e quindi su Aggiungi.
 Poi fare clic su Sfoglia e nell'elenco delle cartelle fare doppio clic
sulle cartelle finché verrà aperta la cartella contenente il file di
collegamento a Microsoft® Excel.
 Infine fare clic su Avanti, specificare il nome da assegnare al
collegamento digitare il nome del collegamento, ad esempio
Microsoft® Excel, quindi fare clic su Fine.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20054
Lavorare in Ambiente MS Excel
 All’avvio di EXCEL sarà visualizzata una nuova Cartella vuota.
 Graficamente possono essere distinte, dall’alto in basso, le
seguenti aree:
 La Barra dei Menu, dai quali sono selezionabili i comandi
 Le Barre degli Strumenti, che contengono una serie di pulsanti
selezionabili tramite mouse e consentono d'accedere rapidamente ai
comandi di frequente utilizzo.
 La Barra del Titolo della finestra attiva.
 L’Area di Lavoro suddivisa in righe e colonne.
 Le Barre di Scorrimento, orizzontale e verticale, che permettono di
visualizzare varie parti del foglio di lavoro non contenute nello
schermo.
 La Barra contenente le schede dei fogli.
 La Barra di Stato, nella quale sono riportate le informazioni relative al
documento attivo, o al comando evidenziato.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20055
Lavorare in Ambiente MS Excel
Standard
Formattazione
Barra di scorrimento
orizzontale
Barra di scorrimento verticale
Area di lavoro
Barra del titolo
Barra dei menu foglio di
lavoro
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20056
Lavorare in Ambiente MS Excel
 In Microsoft Excel
 I file vengono denominati Cartelle (Workbooks).
 Le cartelle di lavoro possono essere costituite da più
fogli di lavoro (Worksheets) e fogli grafici (Charts).
 Collettivamente i fogli di lavoro e i fogli grafici
vengono indicati con il termine Sheets.
 In una cartella di lavoro attivare fogli differenti
selezionando con il mouse le linguette dei fogli poste
nella parte inferiore di ciascun foglio. Tali linguette
vengono definite schede.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20057
Lavorare in Ambiente MS Excel
 In Microsoft Excel
 Il foglio correntemente selezionato viene definito
Activeworksheet
 Un foglio di lavoro è costituito da righe (identificate da numeri)
e da colonne (identificate da lettere).
 Le lettere di colonna vanno da A a IV. I numeri di riga vanno da
1 a 65536
 L’intersezione di una riga e di una colonna individua una cella.
 L'insieme delle celle è indicato con il termine cells
 Una cella si indica: cells (“A1”) = cells (1,1)
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20058
Lavorare in Ambiente MS Excel
 Cartelle
 Fogli
 Grafici
 Altri oggetti
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20059
Lavorare in Ambiente MS Excel
Azione Operazione
Aprire un File Premere con il mouse sul pulsante Apri della
barra degli strumenti standard oppure selezionare
la voce Apri dal menu File. Si aprirà un form di
navigazione standard dal quale selezionare il file
desiderato.
Salvare un File Scegliere Salva dal menu File o, se si
desidera cambiare nome, scegliere Salva con
nome… anche in questo caso si aprirà un form di
navigazione Windows col quale aprire la cartella
nella quale salvare il nuovo file digitando il nome
nell’apposita casella.
Selezionare un foglio di lavoro Fare clic sulla scheda relativa
Selezionare una cella Fare clic sulla cella
Selezionare un intervallo di celle Tenendo premuto il pulsante del mouse
trascinare da un angolo all’angolo opposto
dell’intervallo di celle desiderato
Assegnare un nome ad un intervallo di
celle
Selezionare la o le celle come descritto nei
punti precedenti, dal menu Inserisci scegliere il
sottomenu Nome e di questo la voce Definisci…
nel form Definisci Nome digitare il nome nella
casella “Nomi nella cartella di lavoro”
Immettere dati Selezionare una cella e digitare i dati quindi
premere INVIO o cambiare cella selezionata
Scrivere una formula Digitare = e il resto della formula dopodiché
premere INVIO
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200510
Lavorare in Ambiente MS Excel
 Inserire dati nelle celle e nella barra della formula
 Per inserire un dato in una cella è sufficiente selezionare la
cella e digitare. Durante la digitazione il dato appare sia
all’interno della cella che nella barra della formula.
Elenco Funzioni
Inserisci Funzione
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200511
Lavorare in Ambiente MS Excel
 Tipi di file
 Cartelle di lavoro – XLS
 Modello – XLT
 Una cartella di lavoro creata al fine di utilizzarla come base per altre
cartelle di lavoro simili. È possibile creare modelli per le cartelle di
lavoro e per i fogli di lavoro. Il modello predefinito per le cartelle di
lavoro è denominato Cartel.xlt. Il modello predefinito per i fogli di
lavoro è denominato Foglio.xlt.
 Componenti aggiuntive - XLA
 Applicazione supplementare che amplia le funzionalità dei programmi
di Microsoft Office aggiungendo comandi personalizzati e
caratteristiche specializzate.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200512
 Lavorare in Ambiente MS Excel
 Le Macro di Excel
 L’ambiente di Sviluppo del VBA
 La Sintassi del VBA
 Tipi di Dato e Operatori
 Istruzioni di Controllo
 Strutture Dati
 Procedure
 Gestire l’Interazione con Excel
 Funzioni Speciali
 Lavorare in Ambiente MS Excel
 Le Macro di Excel
 L’ambiente di Sviluppo del VBA
 La Sintassi del VBA
 Tipi di Dato e Operatori
 Istruzioni di Controllo
 Strutture Dati
 Procedure
 Gestire l’Interazione con Excel
 Funzioni Speciali
Elementi di Programmazione in Visual Basic per Excel
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200513
Le Macro di Excel
 La costruzione e l'organizzazione di strutture dati non banali tramite
Excel può comportare l'esecuzione da parte dell'utente di una discreta
mole di operazioni, spesso ripetitive.
 In questi casi può essere estremamente utile ricorrere al registratore di
macro che permette di memorizzare una sequenza di operazioni al fine
di poterle successivamente ripetere a richiesta.
 Il registratore macro di Excel memorizza le operazioni eseguite
dall’utente registrando gli equivalenti comandi sotto forma di istruzioni in
linguaggio Visual Basic.
 per questo motivo il registratore di macro oltre ad essere un utilissimo
aiuto nella normale operatività con Excel costituisce anche un
formidabile strumento didattico per cominciare a muoversi con la
sintassi VBA.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200514
Le Macro di Excel
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200515
Le Macro di Excel
 Oltre a vedere la
macro in esecuzione è
possibile esaminare il
codice prodotto e farlo
girare istruzione per
istruzione.
 Quest’attività oltre al
chiaro valore didattico
ha un enorme utilità ai
fini del test dei
programmi prodotti
(debug).
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200516
 Lavorare in Ambiente MS Excel
 Le Macro di Excel
 L’ambiente di Sviluppo del VBA
 La Sintassi del VBA
 Tipi di Dato e Operatori
 Istruzioni di Controllo
 Strutture Dati
 Procedure
 Gestire l’Interazione con Excel
 Funzioni Speciali
 Lavorare in Ambiente MS Excel
 Le Macro di Excel
 L’ambiente di Sviluppo del VBA
 La Sintassi del VBA
 Tipi di Dato e Operatori
 Istruzioni di Controllo
 Strutture Dati
 Procedure
 Gestire l’Interazione con Excel
 Funzioni Speciali
Elementi di Programmazione in Visual Basic per Excel
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200517
L’Ambiente di Sviluppo del VBA
 Il Visual Basic
dispone di un
ambiente di
sviluppo integrato
(IDE) attraverso il
quale è possibile
non solo
modificare le
macro ma scrivere
interi programmi;
 L’editor è
composto da una
serie di finestre
tramite le quali
controllare le varie
fasi di sviluppo e
test
dell’applicazione;
 Da Excel l’editor VBA
può essere richiamato
utilizzando la finestra
VBA o premendo F11.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200518
GESTIONE PROGETTI. Questa sottofinestra
contiene un diagramma ad albero delle
cartelle di lavoro aperte e degli oggetti Excel
in esse contenuti (oggetti, moduli, riferimenti,
form e così via). Si userà la finestra gestione
progetti per navigare fra i vari moduli ed altri
oggetti di un progetto VBA
FINESTRA PROPRIETA’. In questa finestra
compare un elenco di tutte le proprietà
dell’oggetto attualmente selezionato.
FINESTRA DEL CODICE. La finestra del
codice è quella in cui si può esaminare,
modificare o creare ex-novo il codice
sorgente VBA. Questa finestra viene usata
per scrivere nuove macro o per editare macro
esistenti.
FINESTRA IMMEDIATA. In questa finestra è
possibile inserire comandi diretti per la
visualizzazione del valore assunto dalle
variabili (usata in fase di debug)
FINESTRA CONTROLLO. Consente il
monitoraggio del contenuto di una variabile o
dei valori generati da un’espressione (usata
in fase di debug).
Identifica un progetto VBA ovvero un insieme
di oggetti e il nome fra parentesi è il nome
della cartella in cui esso è memorizzato (in
questo caso Cartel1);
Identifica un oggetto di tipo foglio di lavoro
contenuto nella cartella il cui nome appare
fra parentesi; tutti i fogli di lavoro appaiono
identificati dalla parola Foglio seguita da un
numero, ma è importante non confonderlo
con il nome che appare sul cavalierino nella
finestra di Excel e che nella finestra Progetto
appare fra parentesi; per ogni foglio di lavoro
presente nella cartella sono presenti
altrettante voci.
Indica la cartella
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200519
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200520
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200521
 Un modulo è concettualmente simile ad un documento al
cui interno si inseriscono i programmi o una loro parte.
 La suddivisione di un programma su più moduli spesso è
dovuta alla volontà del programmatore di suddividere su più
parti il programma dividendolo con concetti di omogeneità;
 per esempio si può avere un modulo con tutte le funzioni create che
eseguono i calcoli finanziari…
 …un altro con le routine che gestiscono l’accesso al database…
 …un altro con le funzioni create ad uso generale come quelle che
eseguono particolari elaborazioni sul testo mentre…
 …un altro modulo contiene le routine principali del programma che
richiamano quelle contenute negli altri moduli.
 Un modulo è concettualmente simile ad un documento al
cui interno si inseriscono i programmi o una loro parte.
 La suddivisione di un programma su più moduli spesso è
dovuta alla volontà del programmatore di suddividere su più
parti il programma dividendolo con concetti di omogeneità;
 per esempio si può avere un modulo con tutte le funzioni create che
eseguono i calcoli finanziari…
 …un altro con le routine che gestiscono l’accesso al database…
 …un altro con le funzioni create ad uso generale come quelle che
eseguono particolari elaborazioni sul testo mentre…
 …un altro modulo contiene le routine principali del programma che
richiamano quelle contenute negli altri moduli.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200522
 Lavorare in Ambiente MS Excel
 Le Macro di Excel
 L’ambiente di Sviluppo del VBA
 La Sintassi del VBA
 Tipi di Dato e Operatori
 Istruzioni di Controllo
 Strutture Dati
 Procedure
 Gestire l’Interazione con Excel
 Funzioni Speciali
 Lavorare in Ambiente MS Excel
 Le Macro di Excel
 L’ambiente di Sviluppo del VBA
 La Sintassi del VBA
 Tipi di Dato e Operatori
 Istruzioni di Controllo
 Strutture Dati
 Procedure
 Gestire l’Interazione con Excel
 Funzioni Speciali
Elementi di Programmazione in Visual Basic per Excel
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200523
La Sintassi del VBA
 Il Visual Basic deriva la sua sintassi dal vecchio linguaggio basic;
 Nel corso del tempo molte nuove strutture sintattiche sono state
aggiunte al linguaggio trasformandolo in qualcosa di molto
diverso rispetto all’originale;
 In questa parte vedremo la componente convenzionale del
linguaggio cioè le istruzioni base per la gestione del flusso del
programma, i principali tipi di dato gestiti e la costruzione di
procedure;
 Nella prossima sezione vedremo la parte più innovativa di questo
linguaggio e cioè la componente di interazione con Excel
realizzata tramite componenti di programmazione orientata agli
oggetti.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200524
La Sintassi del VBA:
Tipi di Dato e Operatori
 Anche Visual Basic, come tutti i linguaggi di programmazione, prevede
l'uso delle variabili, mediante le quali è possibile memorizzare dei valori
testuali o numerici in strutture a cui il programma può accedere grazie a
un nome assegnato loro in fase di creazione.
 Una variabile è detta locale quando è definita all'interno di una
procedura;
 La sua creazione avviene quando si fa riferimento ad essa per la prima
volta, oppure quando è eseguita l'istruzione Dim, che presenta la
seguente sintassi:
Dim <nome> [As <tipo>]
in cui <nome> rappresenta il nome da assegnare alla variabile.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200525
La Sintassi del VBA:
Tipi di Dato e Operatori
Tipo di dato è il termine che fa riferimento alla particolare natura dei dati che il VBA può memorizzare e manipolare quali testo o
numeri. La tabella che segue elenca i tipi di dati supportati e indica lo spazio su disco e l'intervallo valido per ciascun tipo di dati.
Tipo di dati Spazio su disco Intervallo
Byte 1 byte Da 0 a 255
Boolean 2 byte True o False
Integer 2 byte Da -32.768 a 32.767
Long 4 byte Da -2.147.483.648 a 2.147.483.6477
Single 4 byte Da -3,402823E38 a -1,401298E-45 per valori negativi; da
1,401298E-45 a 3,402823E38 per valori positivi
Double 8 byte Da -1,79769313486232E308 a -4,94065645841247E-324 per
valori negativi; da 4,94065645841247E-324 a
1,79769313486232E308 per valori positivi.
Currency 8 byte Da -922.337.203.685.477,5808 a 922.337.203.685.477,5807
Decimal 14 byte +/-79.228.162.514.264.337.593.543.950.335 senza
virgola; +/-7,9228162514264337593543950335 con 28
decimali; il numero minore diverso da zero è +/-
0,0000000000000000000000000001
Date 8 byte Dall'1 gennaio 100 al 31 dicembre 9999
Object 4 byte Qualsiasi riferimento Object
String 10 byte + lunghezza stringa Da 0 a circa 2 miliardi
Variant
(con numeri) 16 byte Qualsiasi valore numerico fino all'intervallo di un Double
Variant
(con caratteri) 22 byte + lunghezza stringa Stesso intervallo di String a lunghezza
variabile Definito dall'utente
(utilizzando Type) Numero richiesto dagli elementi L'intervallo di ciascun elemento è
identico a quello del relativo tipo
di dati sopraelencato.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200526
La Sintassi del VBA:
Tipi di Dato e Operatori
 Tipi Numerici
 Il Visual Basic fornisce per la gestione dei valori numerici varie possibilità che vanno
di volta in volta scelte in accordo con il genere di informazione che deve essere
memorizzata.
 A prima vista potrebbe apparire più comodo impiegare tipi generici che vadano
bene per qualunque occasione come il Double ma in realtà è sconsigliabile per vari
motivi, soprattutto perché i tipi che supportano la parte decimale vengono elaborati
ad una velocità inferiore a quella dei tipi che non la gestiscono quali i tipi Integer
o Long.
 Dim NumeroIntero as Integer
 Dim NumeroReale as Single
 NumeroIntero = 5
 NumeroReale = 4.5
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200527
La Sintassi del VBA:
Tipi di Dato e Operatori
 Tipo di dati in Excel:
 Dati Numerici
 Dalle Impostazioni
internazionali nel
pannello di controllo
modificare
 Per visualizzare i
numeri in notazione
scientifica ovvero 2.3
e non 2,3
 Inoltre direttamente in
excel (menu
Formato, Celle) è
possibile scegliere il
tipo di notazione
numerica.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200528
La Sintassi del VBA:
Tipi di Dato e Operatori
 Date
 Il VBA usa il tipo dati Date per memorizzare data e ora. Il tipo Date
utilizza 8 byte di memoria per ogni combinazione di data/ora.
 Per assegnare un valore ad una variabile di tipo Date mediante
un’istruzione, si deve ricorrere ad una sintassi particolare che prevede il
racchiudere la data tra una coppia di caratteri #.
 Per esempio il 31 dicembre 2005 può essere rappresentato
come illustrato
 Dim UltimoDellAnno as Date
 UltimoDellAnno = #31/12/2005#
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200529
La Sintassi del VBA:
Tipi di Dato e Operatori
 Stringhe
 Per memorizzare dati testuali quali nomi, indirizzi, annotazioni o
altro si ricorre al tipo String.
 Facendo seguire la parola chiave String da un asterisco e un
numero è possibile predeterminare una lunghezza per le
stringhe in modo che il valore in esse inserito
 se eccede la dimensione prevista venga troncato
 se è inferiore vengano automaticamente inseriti degli
spazi fino a raggiungere la lunghezza definita.
 Dim Nome as String
 Nome = “Giovanni”
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200530
La Sintassi del VBA:
Tipi di Dato e Operatori
 Operatori Matematici
 Gli operatori matematici sono quelli che indicano le principali
operazioni matematiche e sono:
 + : addizione
 - : sottrazione
 * : moltiplicazione
 / : divisione
  : divisione con restituzione della sola parte intera
 ^ : elevazione a potenza
 Sqr : radice quadrata
 mod : resto di una divisione
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200531
La Sintassi del VBA:
Tipi di Dato e Operatori
 Operatore di Assegnazione
 L’operatore di assegnazione coincide graficamente con l’operatore di
confronto di uguaglianza. Ciò non causa generalmente nessuna
confusione nel programmatore che si abitua con una certa rapidità a
riconoscerli e distinguerli nel loro significato.
 L’unico aspetto che lascia momentaneamente confusi chi non ha mai
avuto esperienze di sviluppo software è proprio il carattere uguale come
operatore di assegnazione in quanto si tende a considerare l’uguale
un’asserzione di uguaglianza fra il valore posto alla sua destra e quello
posto alla sua sinistra
 INCREMENTO DI UNA VARIABILE : a = a + 1
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200532
La Sintassi del VBA:
Tipi di Dato e Operatori
 Operatori di Confronto
Operatore Simbolo Esempio Applicabile a
Minore < A < B qualunque
Minore o uguale <= A <= B qualunque
Uguale = A = B qualunque
Diverso <> A <> B qualunque
Maggiore > A > B qualunque
Maggiore o uguale >= A >= B qualunque
Identico tipo Is A Is B Object
Analisi per criteri Like A Like B String
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200533
 Istruzioni Condizionali
 Esecuzione di Cicli
 Determinati
 Condizionali
La Sintassi del VBA:
Istruzioni di Controllo
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200534
La Sintassi del VBA:
Istruzioni di Controllo
 La condizione IF
 Il flusso delle istruzioni all'interno della procedura non è
necessariamente rigidamente definito, ma può variare in base al
verificarsi di alcune condizioni.
 Il programma deve pertanto essere in grado di prendere delle
decisioni.
 Come la quasi totalità dei linguaggi di programmazione, Visual Basic
prevede a tal fine la struttura If, caratterizzata dalla seguente
sintassi:
If <condizione> Then
<istruzioni da eseguire se la condizione è vera>
[Else
<istruzioni da eseguire se la condizione è falsa>]
End If
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200535
La Sintassi del VBA:
Istruzioni di Controllo
 La condizione può essere rappresentata da pressoché qualsiasi
espressione booleana.
 Si ricorda che un'espressione è così detta se può assumere solo due valori
distinti, cioè vero o falso.
 Se essa è verificata, l'interprete esegue il blocco di istruzioni indicato fra
le parole chiave Then e Else. In caso contrario, è eseguito il secondo
gruppo di comandi. Si noti che quest'ultimo può anche essere assente.
In tal caso, la parola chiave Else non va utilizzata e non è eseguito
alcun codice in caso di mancata verifica della condizione.
 La frase End If delimita la struttura. Tutte le istruzioni che la seguono
sono eseguite in modo indipendente dal valore dell'espressione
booleana.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200536
La Sintassi del VBA:
Istruzioni di Controllo
 La struttura Select Case
 E’ possibile ricorrere ad una diversa struttura di controllo denominata Select Case, la
cui sintassi è la seguente:
Select Case <variabile>
Case <valore 1>:
<blocco istruzioni 1>
[Case <valore 2>:
<blocco istruzioni 2>]
..
[Case <valore n>:
<blocco istruzioni n>]
[Case Else:
<istruzioni da eseguire se tutti i confronti falliscono>]
End Select
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200537
La Sintassi del VBA:
Istruzioni di Controllo
 La struttura Select Case è adatta ad essere utilizzata
ogniqualvolta si desideri variare il flusso del programma in base al
risultato del confronto fra il valore di una variabile e uno o più dati
costanti.
 Ognuno di essi deve essere preceduto dalla parola chiave Case e
seguito dai due punti, nonché dal gruppo di istruzioni da eseguire
quando il confronto ha esisto positivo.
 Inoltre, è possibile utilizzare la clausola Case Else, che va
obbligatoriamente posta alla fine della struttura, per definire un
gruppo di istruzioni che deve essere eseguito solo se tutti i confronti
hanno ottenuto un esito negativo.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200538
La Sintassi del VBA:
Istruzioni di Controllo
 Gli operatori logici elementari
 Si ipotizzi di voler scrivere una struttura If per verificare se il valore di una variabile
numerica intera, denominata n, appartiene all'intervallo compreso fra 10 e 100. È
necessario valutare contemporaneamente due condizioni:
 n deve essere maggiore di 10 E minore di 100
 Per far sì che sia prodotta una stringa indicante l'esito del confronto, occorre digitare
il seguente codice:
If Numero > 10 then
If Numero < 100 then
Testo = "Il numero è compreso fra 10 e 100"
Else
Testo = "Il numero non appartiene all'intervallo"
End if
End if
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200539
La Sintassi del VBA:
Istruzioni di Controllo
 L'operatore And
 Spesso si rivela necessario valutare la contemporanea validità di due o più
condizioni.
 È il caso dell'esempio precedente, in cui si desidera verificare se la variabile
Numero contiene un valore maggiore di 10 e nel contempo minore di 100.
 L'operatore And assolve questo compito, restituendo il valore logico True solo se le
condizioni a cui è applicato sono contemporaneamente verificate. Il codice può
pertanto essere riscritto come segue:
If (Numero > 10) AND (Numero < 100) Then
Testo = "Il numero è compreso fra 10 e 100"
Else
Testo = "Il numero non appartiene all'intervallo"
End if
 Come è possibile notare, la struttura risulta più semplice, in quanto composta da un
solo livello.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200540
La Sintassi del VBA:
Istruzioni di Controllo
 L'operatore Or
 A differenza del precedente, l'operatore Or restituisce il valore logico
True se almeno una delle condizioni specificate è vera. Ad
esempio, la condizione
 (Numero = 5) OR (Numero > 11)
è verificata quando la variabile Numero assume un valore maggiore
di 11 o uguale a 5.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200541
La Sintassi del VBA:
Istruzioni di Controllo
 L'operatore Not
 Un altro utile operatore logico è quello di negazione (Not).
 Come è facile dedurre, esso restituisce il valore True se la condizione a cui è
applicato non è verificata, mentre restituisce False in caso contrario.
 A titolo di esempio, si supponga di voler realizzare una struttura If in grado di
generare una stringa indicate se il valore della variabile Numero risulta
contemporaneamente diverso da 5 e da 10. Il codice da digitare è il seguente:
 If NOT ((Numero = 5) Or (Numero = 10)) Then
 Testo = "Il numero è diverso da 5 e da 10"
 End if
 Si noti la connessione con l’operatore And
 If Numero <> 5 And Numero <> 10 Then
 Testo = "Il numero è diverso da 5 e da 10"
 End if
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200542
La Sintassi del VBA:
Istruzioni di Controllo
 Il ciclo For
 Si supponga di voler realizzare un programma in grado di calcolare il
fattoriale di un numero, ovvero il prodotto di tutti i valori interi positivi minori
o uguali ad esso.
 Gli strumenti illustrati fino a questo punto non si rivelano sufficienti a tal
fine, in quanto è necessaria la capacità di ripetere per un numero variabile
di volte l'operazione di moltiplicazione.
 Si impone pertanto il ricorso alle strutture di iterazione.
 Nel caso dell'esempio, occorre applicare la moltiplicazione a tutti i numeri
naturali minori o uguali a quello di cui si desidera calcolare il fattoriale.
 Appare così evidente la necessità di disporre di una struttura in grado di
permettere la ripetizione di una porzione di codice per un numero finito di
volte.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200543
La Sintassi del VBA:
Istruzioni di Controllo
 Si tratta della classica struttura For, che nel caso di Visual Basic è caratterizzata dalla
seguente sintassi:
For <contatore> = <inizio> To <fine> [Step <passo>]
<istruzione 1>
...
<istruzione n>
Next [<contatore>]
 Dopo la parola chiave For è necessario far seguire una variabile intera, che funge da
contatore.
 Il suo valore è incrementato ad ogni ripetizione di un numero di unità pari a quello
specificato dopo la parola chiave Step, fino al raggiungimento del valore finale;
 questa condizione determina la fine delle iterazioni e il passaggio all'istruzione seguente la
parola riservata Next.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200544
La Sintassi del VBA:
Istruzioni di Controllo
 Il ciclo While
 Una diversa esigenza è quella soddisfatta dall'uso del ciclo While, che permette la
ripetizione di un segmento di codice per tutto il tempo in cui una condizione risulta
vera. La sua sintassi è la seguente:
While <condizione>
<istruzione 1>
<istruzione 2>
...
<istruzione n>
Wend
 Le istruzioni comprese fra le parole chiave While e Wend sono ripetute per un
numero di volte non stabilito rigidamente a priori, bensì dipendente dalle stesse
istruzioni, che devono essere in grado di fare in modo che la condizione ad un certo
punto smetta di verificarsi. In caso contrario, si incappa in un errore molto diffuso fra
i programmatori alle prime armi, ovvero si crea ciò che è usualmente detto ciclo
infinito..
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200545
La Sintassi del VBA:
Istruzioni di Controllo
 Le parole chiave Do e Loop
 Il ciclo While può anche essere descritto in modo più elegante per
mezzo delle parole chiave Do e Loop. In questo caso la sintassi
diventa:
Do While <condizione>
<istruzione 1>
<istruzione 2>
...
<istruzione n>
Loop
 Il comportamento è analogo a quello visto in precedenza: le istruzioni
contenute all'interno della struttura sono ripetute fintanto che la
condizione indicata accanto alla parola While si verifica.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200546
La Sintassi del VBA:
Istruzioni di Controllo
 Il ciclo Do Until
 Pressoché analogo è il ciclo Do Until, caratterizzato dalla seguente
sintassi:
Do Until <condizione>
<istruzione 1>
<istruzione 2>
...
<istruzione n>
Loop
 In questo caso, le iterazioni avvengono quando la condizione è falsa e
terminano quando essa si avvera.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200547
La Sintassi del VBA:
Strutture Dati
 Una struttura dati può essere immaginata come una collezione di dati.
 Tanto per chiarirsi le idee facciamo un esempio pratico. Chi di noi non
ha mai utilizzato un’agenda telefonica? Essa è a tutti gli effetti una
struttura di dati perché colleziona informazioni di varia natura. L’agenda
è suddivisa in pagine ognuna delle quali può contenere dei dati come:
nome, cognome, indirizzo, numero telefonico, etc.
 L’utilità di una simile struttura sta nel fatto che abbiamo la possibilità di
risalire alle particolari informazioni che ci interessano anche quando gli
elementi al suo interno sono molto numerosi. Inoltre qualora se ne
presentasse la necessità dobbiamo avere la possibilità di aggiornare dei
dati già esistenti oppure di introdurne dei nuovi.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200548
La Sintassi del VBA:
Strutture Dati
 Fra le strutture più note ce ne sono due predefinite nella maggior
parte dei linguaggi di programmazione, le quali sono:
 Array
 Record
 Gli Array sono strutture dati i cui elementi appartengono tutti allo
stesso tipo mentre un record può essere composto da elementi di
tipo diverso.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200549
La Sintassi del VBA:
Strutture Dati
 Gli array contengono dati omogenei, tipicamente si considerano array a
una e due dimensioni ai quali ci riferiremo come di comune coi termini
“vettore” e “matrice”. La dichiarazione di un vettore o di una matrice
deve essere accompagnata dal numero di elementi.
 Esempio:
 Dim myVector(20) as Double
 Dim myMatrix(10,10) as Integer
 Nel primo caso abbiamo definito un vettore che contiene numeri in
doppia precisione di 20 elementi, nel secondo abbiamo una matrice 10
x 10 di interi.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200550
La Sintassi del VBA:
Strutture Dati
 Descriviamo anche la sintassi in forma generica
Dim NomeVariabile ([Indici]) [As Tipo]
La sezione indici ha la seguente sintassi
[minimo to] massimo [, [minimo to] massimo]
che cosa vuol dire? E’ semplice, prima di tutto ricordiamo che tutto quello che si
trova tra parentesi quadre è opzionale, quindi è possibile dimensionare un vettore
sia scrivendo
Dim myVector(20) As Double
Sia scrivendo
Dim myVector(1 to 10) As Double
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200551
La Sintassi del VBA:
Strutture Dati
 In maniera analoga entrambe le dichiarazioni sono valide
Dim myMatrix(10,10) As Integer
Dim myMatrix(1 to 10, 1 to 10) As Integer
 Notate che è richiesto solo il limite superiore; l’indicazione del valore minimo per
l’indice è opzionale. Se si specifica solo il limite superiore il VBA numera gli
elementi dell’array coerentemente con l’impostazione Option Base.
 Questa è una direttiva al compilatore che specifica se si desidera che gli indici
degli array partano da 0 o da 1. La sintassi è la seguente
Option Base 0 | 1
 In mancanza di questa istruzione l’interprete VBA fa partire la numerazione degli
array da 0.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200552
La Sintassi del VBA:
Strutture Dati
 Il riferimento ad un generico elemento all’interno di un vettore o di
una matrice avviene specificando l’indice all’interno di parentesi.
 Esempio:
a = myVector(5)
b = myMatrix(7,6)
 Nel primo caso alla variabile a viene assegnato il valore del 5°
elemento del vettore myVector, nel secondo b è posto uguale
all’elemento di matrice posto nella 7a riga, 6a colonna
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200553
La Sintassi del VBA:
Strutture Dati
 In maniera analoga, ogni volta che si intende attribuire un valore ad
un certo elemento di un array occorre specificare l’indice relativo.
Ad esempio
MyVector(7) = 8.9
 Quando esegue questa istruzione il Visual Basic copia il valore 8.9
nell’elemento del vettore indicato, sostituendone il contenuto
precedente.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200554
La Sintassi del VBA:
Strutture Dati
 Uno dei vantaggi principali dell’uso di array è la possibilità di
utilizzare dei cicli per semplificare l’elaborazione dei diversi
elementi che lo compongono. Ad esempio se vogliamo inizializzare
a zero tutti gli elementi di un vettore di dimensione 10 possiamo
semplicemente scrivere
For i = 1 to 10
MyVector(i) = 0
Next
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200555
La Sintassi del VBA:
Strutture Dati
 ... Oppure possiamo costruire una matrice identità
For i = 1 to MaxNrRighe
For j = 1 to MaxNrColonne
If j = i then
myMatrix(i, j) = 1
Else
myMatrix(i, j) = 0
End If
Next j
Next i
 Si noti che quando si utilizzano cicli For nidificati può essere utile riportare
l’indice del ciclo accanto all’istruzione Next che chiude il ciclo stesso
(questa indicazione è opzionale).
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200556
La Sintassi del VBA:
Strutture Dati
 Array Statici e Dinamici
 Array di questo tipo vengono detti statici perché il numero di
elementi rimane costante in tutta la procedura.
 Tuttavia vi sono molte situazioni in cui non è noto a priori il
numero di elementi da salvare in un dato vettore o matrice.
 In questi casi il VBA ci viene in aiuto con un tipo particolare di
array, i cosiddetti array dinamici.
 Queste strutture sono definite in modo da permettere alla
procedura di cambiarne la dimensione durante l’esecuzione del
programma.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200557
La Sintassi del VBA:
Strutture Dati
 Come abbiamo già accennato possono presentarsi delle situazioni in
cui non è possibile o semplicemente non è conveniente fissare a priori il
numero di elementi di un array cioè la sua dimensione.
 L’uso di un array dinamico al posto di uno statico risolve questo
problema in quanto un array dinamico può essere esteso o ridotto
secondo le necessità.
 Un array dinamico viene dichiarato tale facendo seguire il nome da una
coppia di parentesi tonde vuote, ad esempio possiamo scrivere
Dim Scadenze() As Date
Dim Flussi() As Currency
Dim Matrice() As Double
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200558
La Sintassi del VBA:
Strutture Dati
 Un array così dichiarato non può venire utilizzato prima di averne
stabilito almeno una volta le dimensioni. Questo si realizza tramite
l’istruzione ReDim
ReDim Scadenze(n) As Date
ReDim Flussi(n) As Currency
ReDim Matrice(m, m) As Double
 Si noti che questo permette anche di dimensionare un array ad un
valore che sarà noto solo durante l’esecuzione di una procedura.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200559
La Sintassi del VBA:
Strutture Dati
 Ad esempio supponiamo di scrivere un programma che chieda in
input all’utente il numero di elementi da riservare per la
memorizzazione di una serie di dati, in questo caso indicando con n
la variabile letta dal programma potremmo scrivere
 
Dim n As Integer
Dim Vettore() As Single
n = InputBox(“Inserire il numero di elementi”)
ReDim Vettore(1 To n) As Single
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200560
La Sintassi del VBA:
Strutture Dati
 E’ possibile anche ridimensionare un array preservandone il
contenuto. A tale scopo è necessario usare la clausola Preserve
che va posta subito dopo la parola chiave ReDim, ad esempio
 
ReDim Preserve Vettore(n) As Single
 
 Nel caso di un array multidimensionale, tuttavia, quando si usa la
parola chiave Preserve si può modificare soltanto l’ultima
dimensione.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200561
La Sintassi del VBA:
Strutture Dati
 Per riuscire a tenere traccia delle dimenzioni di array siano essi statici o
dinamici il VBA prevede due funzioni, LBound e UBound, che
restituiscono il valore minimo e massimo per gli indici di un array. La
sintassi generica per queste funzioni è
 
LBound(NomeArray [, dimensione])
UBound(NomeArray [, dimensione])
 
 dimensione è un numero intero che specifica per quale dimensione
dell’array si vuole ottenere il limite minimo o massimo. Se non viene
specificato VBA restituisce l’estremo relativo alla prima dimensione
dell’array.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200562
La Sintassi del VBA:
Strutture Dati
 Spesso i dati possono essere aggregati in modo da avere variabili
che contengono al loro interno altre variabili.
 Ad esempio possiamo definire una variabile Opzione che contiene
al suo interno gli attributi che caratterizzano questo tipo di oggetto.
 L’istruzione Type serve a questo scopo
Type Opzione
Scadenza as Date
Strike as Double
Sottostante as Double
Sigma as Double
TassoRiskFree as Double
End Type
Si noti l’assenza
dell’istruzione Dim a
questo livello di
definizione
!
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200563
La Sintassi del VBA:
Strutture Dati
 Possiamo così dichiarare una nuova variabile, ad esempio
un’azione come un generico titolo
 Dim OPT_ENEL_150305 As Opzione
 E’ possibile accedere ai singoli attributi del titolo (campi) con
la seguente sintassi
 ValoreSottostante = OPT_ENEL_150305.Sottostante
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200564
La Sintassi del VBA:
Strutture Dati
 With
 L’istruzione With può essere applicata in vari contesti per migliorare la
leggibilità di istruzioni che operino sullo stesso oggetto.
 Essa permette di riportare un’unica volta il nome dell’oggetto e sulle
righe successive abbreviare quest’ultimo con il carattere punto.
 Esempio:
With OPT_ENEL_150305
ValoreSottostante = .Sottostante
Volatilita = .Sigma
Expiration = .Scadenza
End With
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200565
La Sintassi del VBA:
Procedure
 Una procedura è una frazione di codice che esegue un
determinato compito il più possibile elementare;
 Con Visual Basic è possibile creare due tipi di procedure:
 procedure di tipo Sub (SUBROUTINE)
 procedure di tipo Function. (FUNZIONI)
 A differenza di altri linguaggi il Visual Basic distingue
nettamente queste due diverse tipologie di procedura;
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200566
La Sintassi del VBA:
Procedure
 Una procedura Sub (subroutine) è un’unità di codice
racchiusa fra le istruzioni Sub … End Sub.
 La procedura di tipo subroutine esegue un compito ma non
restituisce alcun valore.
 Esempio
Sub CalcolaQuadrato(x as Double, res as Double)
res = x * x
   
End Sub
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200567
La Sintassi del VBA:
Procedure
 Una procedura Function è un’unità di codice racchiusa fra
le istruzioni Function e End Function.
 Come una procedura Sub una procedura Function esegue
un preciso compito. A differenza della procedura Sub tuttavia
essa restituisce anche un valore.
 Esempio
Function CalcolaQuadrato(x as Double) as Double
CalcolaQuadrato = x*x
            
End Function
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200568
La Sintassi del VBA:
Procedure
 Le funzioni e le subroutine possono prendere in
input dei parametri (detti argomenti della funzione).
 Questi parametri sono dei valori che la funzione o la
subroutine riceve per la propria elaborazione e sono
indicati fra le parentesi tonde nella riga di
dichiarazione della funzione.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200569
La Sintassi del VBA:
Procedure  Subroutine e Funzioni: La differenza
 
Public Sub ProceduraSub()
 MsgBox “Questa procedura è una subroutine”
End Sub 
Public Function ProceduraFun() As String
ProceduraFun = “La procedura che ha generato _
questo risultato è una funzione”
End Function 
 
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200570
La Sintassi del VBA:
Procedure
 La sintassi dell’istruzione Sub è la seguente
[Private|Public|Friend][Static] Sub <Nome> [(elencoargomenti)]
[istruzioni]
[Exit Sub]
[istruzioni]
End Sub
 La sintassi dell'istruzione Sub è composta dalle seguenti parti:
 Public (Facoltativa). Indica che la routine Sub è accessibile per tutte le altre routine in tutti i moduli. Se
utilizzata in un modulo che include un'istruzione Option Private, la routine non sarà
disponibile esternamente al progetto.
 Private (Facoltativa). Indica che la routine Sub è accessibile solo per le altre routine incluse nel modulo
in cui è stata dichiarata.
 Static (Facoltativa). Indica che le variabili locali della routine Sub vengono conservate durante le
chiamate. L'attributo Static non influisce sulle variabili dichiarate al di fuori della routine Sub,
anche se vengono utilizzate nella routine stessa.
 Nome (Obbligatoria). Nome della routine Sub, espresso in base alle convenzioni di denominazione
standard delle variabili.
 elencoargomenti (Facoltativa). Elenco delle variabili che rappresentano gli argomenti passati alla
routine Sub , quando questa viene richiamata. Le variabili multiple sono separate da virgole.
 istruzioni (Facoltativa). Qualsiasi gruppo di istruzioni da eseguire nel corpo della routine Sub.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200571
La Sintassi del VBA:
Procedure
 La sintassi generale per una funzione è leggermente più articolata di quella
per una subroutine
 
[Public | Private] Function <Nome> ([Elenco Argomenti]) [As Tipo]
 
‘ Istruzioni VBA
 
Nome = Espressione
 
End Function
 
 Ogni funzione inizia con la parola chiave Function seguita dal nome della
procedura stessa, sopra indicato con Nome.
 Dopo il nome della funzione abbiamo l’elenco degli argomenti della
funzione racchiusi fra parentesi tonde. Se esistono degli argomenti questi
vanno specificati all’interno delle parentesi tonde separati da virgole.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200572
La Sintassi del VBA:
Procedure
 Ritorno di valori da una procedura Function
 Di solito lo scopo di una funzione è quello di eseguire alcuni calcoli o delle
operazioni specifiche su un insieme di dati e di restituire il risultato di queste
operazioni.
 All’interno del corpo della funzione la riga
Nome = Espressione
 
rappresenta l’assegnamento della funzione.
 Perché una funzione restituisca un valore essa deve sempre includere un’istruzione
che assegni un valore al nome della funzione.
 Nella sintassi del Visual Basic questo si ottiene assegnando il valore che si vuole
restituire al programma chiamante ad una variabile fittizia che ha lo stesso nome
della funzione ma che non viene dichiarata in alcun luogo.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200573
La Sintassi del VBA:
Funzioni di Interazione con l’Utente
 InputBox
 La sintassi generale completa per la funzione InputBox è la seguente
InputBox(Messaggio [, Titolo, Default, XPos, YPos, FileAiuto, Contesto])
 
 La variabile Messaggio è una qualsiasi espressione di tipo String ed è l’unico
argomento obbligatorio per la funzione InputBox e serve per indicare all’utente
quale informazione deve inserire, tutti gli altri argomenti sono opzionali (e come
tali sono riportati fra parentesi quadre nella descrizione della sintassi).
 Titolo è una variabile di tipo String che serve per definire il titolo della
finestra di dialogo.
n = InputBox("Domanda", "Titolo", 0)
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200574
La Sintassi del VBA:
Funzioni di Interazione con l’Utente
 MsgBox
 La sintassi generale completa per la funzione MsgBox è la seguente
 
MsgBox Messaggio [, Pulsanti, Titolo, FileAiuto, Contesto]
 
 L’unico argomento obbligatorio per MsgBox è la variabile Messaggio che può essere una
qualunque espressione, gli altri argomenti sono opzionali.
 L’argomento Pulsanti è un’espressione numerica che specifica quanti e quali pulsanti
appaiono nella finestra di dialogo di MsgBox. Questa variabile specifica anche il pulsante
di default nella finestra e se la finestra contiene delle icone per i messaggi critici di
informazione, di avviso o di richiesta di Windows.
MsgBox "Messaggio di Errore", vbCritical + vbYesNoCancel, "Titolo Finestra"
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200575
La Sintassi del VBA:
Funzioni Definite dall’Utente
 Le funzioni che utilizzano alcune restrizioni sulle proprie procedure di
calcolo vengono dette funzioni definite dall’utente e sono le uniche
procedure che Excel può utilizzare nelle formule contenute nelle celle
dei fogli di lavoro.
 Una funzione definita dall’utente non può selezionare, inserire,
eliminare o cambiare formato a nessun dato contenuto in un foglio di
lavoro, inoltre essa non può aggiungere, eliminare o rinominare i fogli
e/o le cartelle di lavoro.
 In altre parole le funzioni definite dall’utente possono soltanto eseguire
dei calcoli o delle manipolazioni su dati ricevuti attraverso l’elenco degli
argomenti o su dati recuperati dai fogli Excel.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200576
La Sintassi del VBA:
Funzioni Definite dall’Utente
 Parametri Opzionali
 Ci sono diverse circostanze in cui può essere utile scrivere una funzione in cui il
numero di parametri da richiedere all’utente non sia rigidamente prefissato.
 Nel caso delle funzioni predefinite del Visual Basic, ad esempio, questa
circostanza più che l’eccezione rappresenta quasi la regola. Pensiamo
ad una funzione VBA nativa come InputBox che richiede in generale
sette parametri ma che può essere richiamata con un solo parametro, il
messaggio che compare nella finestra di dialogo, essendo gli altri sei
opzionali.
 Per creare parametri di questo tipo, ovverosia parametri che possono essere
inseriti oppure omessi in relazione alle diverse esigenze, si utilizza la parola
chiave Optional che va anteposta ad ognuno di essi nella dichiarazione della
funzione.
Function Test(x as Double, Optional y as Double [= 0])
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200577
La Sintassi del VBA:
Funzioni Definite dall’Utente
 Option Pricing con Black & Scholes
Function D_1(S As Single, K As Single, T As Single, _
     Sigma As Single, r As Single, _
            Optional q As Single = 0) As Single
D_1 = (Log(S/K)+(r–q+0.5*Sigma*Sigma)*T)/(Sigma*Sqr(T))
End Function
T
Tqr
K
S
d
σ
σ 





+−+





=
2
1
2
1
ln
Valore di default
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200578
La Sintassi del VBA:
Funzioni Definite dall’Utente
 Option Pricing con Black & Scholes
Function D_2(S As Single, K As Single, T As Single, _
     Sigma As Single, r As Single, _
            Optional q As Single = 0) As Single
D_2 = (Log(S/K)+(r–q-0.5*Sigma*Sigma)*T)/(Sigma*Sqr(T))
End Function
T
Tqr
K
S
d
σ
σ 





−−+





=
2
2
2
1
ln
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200579
La Sintassi del VBA:
Funzioni Definite dall’Utente
 Option Pricing con Black & Scholes
Public Function BS(TipoOpzione As Integer, _
            Sottostante As Double, _
            Strike As Double, _
            Scadenza As Double, _
            Sigma As Double, _
            TassoRiskFree As Double, _
            Optional Tasso As Double = 0) As Double
 
    Dim d1 As Double
    Dim d2 As Double
  
    d1 = D_1(Sottostante, Strike, Scadenza, Sigma, TassoRiskFree, Tasso)
    d2 = D_2(Sottostante, Strike, Scadenza, Sigma, TassoRiskFree, Tasso)
    Select Case TipoOpzione
    Case 1 ' opzione di tipo call
        BS = Sottostante * Exp(-Scadenza * Tasso) * Application.NormSDist(d1) _
                     - Strike * Exp(-Scadenza * TassoRiskFree) *  Application.NormSDist(d2)
    Case -1 ' opzione di tipo put
        BS = -Sottostante * Exp(-Scadenza * Tasso) * Application.NormSDist(-d1) _
                     + Strike * Exp(-Scadenza * TassoRiskFree) * Application.NormSDist(-d2)
    End Select
End Function
)()(
)()(
21
21
dNKedNSep
dNKedNSec
rTqT
rTqT
−+−−=
−=
−−
−−
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200580
La Sintassi del VBA:
Funzioni Definite dall’Utente
 Application.Worksheetfunction
 Si noti che da VBA tramite l’oggetto Application è possibile utilizzare
tutte le funzioni di Excel!
 Nell’esempio abbiamo utilizzato la funzione che calcola la distribuzione
cumulata della normale standard
BS = Sottostante * Exp(-Scadenza * Tasso) * Application.NormSDist(d1) _
                     - Strike * Exp(-Scadenza * TassoRiskFree) *  
Application.NormSDist(d2)
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200581
 Lavorare in Ambiente MS Excel
 Le Macro di Excel
 L’ambiente di Sviluppo del VBA
 La Sintassi del VBA
 Tipi di Dato e Operatori
 Istruzioni di Controllo
 Strutture Dati
 Procedure
 Gestire l’Interazione con Excel
 Funzioni Speciali
 Lavorare in Ambiente MS Excel
 Le Macro di Excel
 L’ambiente di Sviluppo del VBA
 La Sintassi del VBA
 Tipi di Dato e Operatori
 Istruzioni di Controllo
 Strutture Dati
 Procedure
 Gestire l’Interazione con Excel
 Funzioni Speciali
Elementi di Programmazione in Visual Basic per Excel
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200582
Gestire l’Interazione con Excel
 Le caratteristiche sintattiche del VBA viste fino a questo punto
riguardano tecniche di programmazione convenzionale;
 Il punto realmente innovativo del VBA consiste nella possibilità di
interagire dinamicamente con i dati presenti nei foglio Excel
 Un’applicazione VBA per Excel si caratterizza quindi a livello progettuale
distinguendo chiaramente tre fasi
 INPUT – in questa fase si raccolgono i dati necessari all’elaborazione da uno o
più fogli Excel, eventualmente si possono raccogliere altri dati utilizzando la
funzione InputBox o appositi form costruiti dall’utente (vedi oltre);
 ELABORAZIONE – questa è la parte di calcolo convenzionale all’interno della
quale possono essere presenti anche procedure di elaborazione dati realizzate in
altri linguaggi (es. C/C++) al fine di ottimizzare i tempi di elaborazione;
 OUTPUT – Il risultato del calcolo solitamente viene riportato nelle celle del foglio
di lavoro ed eventualmente riportato in grafico.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200583
Gestire l’Interazione con Excel
Oggetti di Excel
Organizzazione Gerarchica
Gli oggetti sono raggruppati in
collezioni
Gli oggetti hanno proprietà
specifiche
Gli oggetti hanno metodi specifici
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200584
Gestire l’Interazione con Excel
 Gli oggetti di Excel (così come quelli delle altre applicazioni Microsoft
Office) sono raggruppati in classi organizzate in modo gerarchico. Ogni
classe di oggetti a sua volta può contenere una o più sottoclassi.
 La gerarchia vede al livello più alto l’oggetto Application che
rappresenta l’applicazione stessa.
 E’ facile rendersi conto che all’interno dell’applicazione molti oggetti
sono dello stesso tipo essendo distinti solo da un nome univoco o da
un indice di riferimento; si pensi ad esempio ai vari fogli che
compaiono all’interno di una cartella di lavoro. Questi oggetti formano
una collezione o insieme di oggetti.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200585
Gestire l’Interazione con Excel
 Gerarchie, Nomi e Collezioni
 Application.Workbooks(“Esempi.xls”).Worksheets(“Foglio1”).Range(“S0”)
 Se siamo nel file Esempi.xls...
 Worksheets(“Foglio1”).Range(“S0”)
 Se siamo nel foglio 1...
 Range(“S0”)
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200586
Gestire l’Interazione con Excel
 Le collezioni sono sempre individuate da nomi al plurale. Ad esempio
in Excel l’insieme Workbooks rappresenta tutte le cartelle di lavoro
correntemente aperte. All’interno di ogni oggetto Workbook è
disponibile un insieme di oggetti Worksheet (i fogli di lavoro), tale
insieme è identificato dal nome Worksheets.
 Tutti gli insiemi in Microsoft Office consentono di accedere a ciascun elemento
nell’insieme oltre che al numero di oggetti dell’insieme.
 Per accedere ad un singolo oggetto in un insieme in Visual Basic è sufficiente
digitare il nome dell’insieme seguito dal valore di un indice univoco di
riferimento (che può essere un nome o un numero) compreso fra parentesi
tonde.
 Ad esempio se intendiamo riferirci al foglio denominato “Foglio1” di una
generica cartella di lavoro, possiamo utilizzare l’insieme Worksheets con la
seguente sintassi: Worksheets(“Foglio1”) oppure Worksheets(1).
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200587
Gestire l’Interazione con Excel
 Ogni oggetto Microsoft Office può contenere proprietà, metodi o eventi.
 Una proprietà è un attributo caratteristico che definisce o descrive un oggetto, come la
dimensione di una cella, la posizione di una finestra di dialogo o la sua forma.
 I metodi (come abbiamo già detto) sono azioni che è possibile eseguire sull’oggetto o
tramite esso. Ad esempio sono metodi della cartella il salvataggio su disco, l’eliminazione
di dati la chiusura della cartella stessa.
 Gli eventi sono frammenti di codice che vengono eseguiti in corrispondenza di eventi
intercettati dal sistema operativo (es. click sul mouse).
 Nella maggior parte dei casi è possibile ottenere il valore di una proprietà e/o
importarla con un determinato valore (tuttavia esistono anche proprietà di sola
lettura).
 Per impostare una proprietà se ne definisce il valore tramite l’operatore di assegnazione.
 Per ottenere il valore di una proprietà è sufficiente specificare la proprietà e, nella maggior
parte dei casi, assegnarla ad una variabile temporanea.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200588
Gestire l’Interazione con Excel
 La sintassi per specificare una proprietà o un metodo
è la stessa
Oggetto.Identificatore
dove
 Oggetto è un qualsiasi riferimento valido ad un oggetto e
 Identificatore è un qualsiasi nome valido di una proprietà
o di un metodo.
 Notate che un punto (.) separa il riferimento all’oggetto
dal nome della proprietà o del metodo.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200589
Gestire l’Interazione con Excel
 Durante la scrittura del codice ogni volta che desiderate
invocare una proprietà o un metodo il VBA visualizza
accanto al punto una finestra in cui compaiono i nomi delle
proprietà e dei metodi dell’oggetto corrente.
 I metodi vengono
identificati da un
blocchetto verde mentre
le proprietà sono
indicate da un’icona a
forma di lista con un
indice che punta ad un
elemento.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200590
Gestire l’Interazione con Excel
 Pulsanti di Comando
 I pulsanti di comando non solo possono attivare un evento
quando vi si preme sopra con il mouse ma rispondono anche
ad altri eventi come ad esempio il semplice spostamento del
mouse sopra il pulsante.
 Dato che i pulsanti di comando possono rispondere ad un
complesso sistema di eventi (questa come vedremo è la regola
piuttosto che l’eccezione per tutti i comandi) è necessario un
modo completamente nuovo per collegare una macro ad un
pulsante.
 Questo nuovo approccio utilizza quelle che vengono chiamate
routine di gestione degli eventi.
 Queste routine sono speciali macro, collegate ad un oggetto,
per esempio ad un pulsante di comando.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200591
Gestire l’Interazione con Excel
 Finestra Proprietà di un Pulsante di Comando
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200592
Gestire l’Interazione con Excel
 Macro Gestione Evento Associata ad un Pulsante di Comando
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200593
Gestire l’Interazione con Excel
 La scatola degli attrezzi
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200594
Gestire l’Interazione con Excel
 Range
 Gli oggetti Range sono probabilmente la classe di oggetti più importante di
Excel.
 Negli intervalli, cioè nei Range, si inseriscono i valori, le formule.
 Intervalli di valori sono alla base della produzione di report e grafici.
 Le tabelle pivot vengono manipolate mediante intervalli.
 Excel possiede tre proprietà che vedono un intervallo come se fosse una
collezione di oggetti:
 la proprietà Cells (che restituisce un insieme di celle);
 la proprietà Rows (restituisce un insieme di righe);
 la proprietà Columns (restituisce un insieme di colonne);
 Queste non sono comunque classi separate in quanto il tipo di dato di una
qualunque di queste proprietà è sempre un oggetto Range.
 L’identificazione di una singola cella può avvenire indicandone il numero di riga
e il numero di colonna come se si trattasse del singolo elemento di una matrice
corrispondente all’intero foglio di lavoro.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200595
Gestire l’Interazione con Excel:
Mettiamo Insieme Funzioni e Fogli di Lavoro
 Riscriviamo le nostre funzioni in forma più compatta utilizzando un
tipo dati definito dall’ utente (struttura)
Type Opzione
S As Double ' valore del sottostante
K As Double ' prezzo di esercizio (strike)
T As Double ' scadenza espressa in anni
r As Double ' tasso risk free
q As Double ' tasso aggiustamento misura
Sigma As Double ' volatilità sottostante
Payoff As Integer ' tipo payoff (call/put)
Esercizio As Integer ' tipo Esercizio (eur/ame)
End Type
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200596
Gestire l’Interazione con Excel:
Mettiamo Insieme Funzioni e Fogli di Lavoro
Public Function BS(Opt As Opzione) As Double
Dim d1 As Double
Dim d2 As Double
d1 = D_1(Opt)
d2 = D_2(Opt)
With Opt
Select Case .Payoff
Case OPTCALL
BS = .S * Exp(-.q * .T) * Application.NormSDist(d1) _
-.K * Exp(-.r * .T) * Application.NormSDist(d2)
Case OPTPUT
BS = -.S * Exp(-.q * .T) * Application.NormSDist(-d1) _
+.K * Exp(-.r * .T) * Application.NormSDist(-d2)
End Select
End With
End Function
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200597
Gestire l’Interazione con Excel:
Mettiamo Insieme Funzioni e Fogli di Lavoro
 La funzione così scritta non è più una “Funzione definita
dall’utente” e quindi non può essere inserita direttamente in
una cella del foglio Excel;
 Per lanciare il calcolo dobbiamo richiamarla da un programma
VBA;
 Questo programma può essere ad esempio la macro
collegata all’evento click di un pulsante di comando
 Vediamo un esempio concreto...
Esempio 1_3.xls
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200598
Alcune Osservazioni sullo Sviluppo di Applicazioni in VBA
 Vantaggi
 Rispetto all’inserimento diretto di una formula nel foglio Excel, lo sviluppo di
funzioni in VBA permette una maggiore chiarezza di sviluppo e ua maggior
rubostezza rispetto agli errori;
 Maggiore portabilità
 Maggiore estendibilità
 In altre parole maggiore manutenibilità del codice
 Svantaggi
 Il VBA è un linguaggio interpretato e non particolarmente performante quando si
tratta di eseguire calcoli numerici. Occorre sempre tener presente questa
limitazione quando si deve scegliere il linguaggio di sviluppo di un algoritmo.
 Tuttavia questa limitazione è effettivamente importante in un numero limitato di
casi e comunque la conoscenza della programmazione in VBA è comunque un
elemento utile in quanto permette di gestire l’interazione con Excel e di
sviluppare (tramite DLL) gli algoritmi nel linguaggio più appropriato.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200599
Gestire l’Interazione con Excel
 User Form
Premere con il tasto destro sul
nodo del VBA Project al quale
vogliamo aggiungere il form
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005100
Gestire l’Interazione con Excel
Alcuni fra gli eventi più comuni dell’oggetto UserForm
Evento Quando Avviene
Activate Questo evento viene scatenato ogni volta che la finestra
diventa attiva cioè passa in primo piano. Questo evento è
molto utile ogniqualvolta si renda necessario aggiornare il
contenuto dei controlli
in modo da riflettere i cambiamenti che possono essere
intervenuti quando la finestra non era attiva.
Click E’ l’evento che si genera ogni volta che l’utente preme con il
mouse sulla superficie della finestra.
Initialize Questo evento si genera quando l’oggetto finestra viene
caricato in memoria. Come vedremo questo evento può essere
scatenato dall’istruzione Load o dal metodo Show. Questo
evento si utilizza per impostare l’aspetto iniziale della finestra
e i controlli eventualmente contenuti nel form. Nel nostro
esempio utilizzeremo questo evento per caricare una serie di
valori predefiniti in un combo box all’interno della finestra di
dialogo.
Terminate Evento scatenato quando l’oggetto finestra viene scaricato
dalla memoria. Questo evento viene utilizzato in tutte quelle
circostanze ove si rende necessario liberare le variabili
dell’oggetto prima di chiudere quest’ultimo.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005101
 Lavorare in Ambiente MS Excel
 Le Macro di Excel
 L’ambiente di Sviluppo del VBA
 La Sintassi del VBA
 Tipi di Dato e Operatori
 Istruzioni di Controllo
 Strutture Dati
 Procedure
 Gestire l’Interazione con Excel
 Funzioni Speciali
 Lavorare in Ambiente MS Excel
 Le Macro di Excel
 L’ambiente di Sviluppo del VBA
 La Sintassi del VBA
 Tipi di Dato e Operatori
 Istruzioni di Controllo
 Strutture Dati
 Procedure
 Gestire l’Interazione con Excel
 Funzioni Speciali
Elementi di Programmazione in Visual Basic per Excel
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005102
Funzioni Speciali
Gestione delle Date
 Year().
 Questa funzione restituisce in output un numero intero (di tipo Integer)
che contiene l’anno estratto da una data che riceve come parametro di
input.
 Nel riquadro seguente vediamo un esempio di impiego della funzione
Year. Supponiamo di voler costruire una funzione che prenda come
parametro di input una data e che restituisca un valore logico vero o
falso a seconda che l’anno della data sia o meno bisestile.
Function IsBisestile(Data As Date) As Boolean
If (Year(Date) Mod 100 <> 0 And Year(Date) Mod 4 = 0) Or _
(Year(Date) Mod 100 = 0 And Year(Date) Mod 400 = 0) Then
IsBisestile = True
Else
IsBisestile = False
End If
End Function
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005103
Funzioni Speciali
Gestione delle Date
 Month().
 Questa funzione permette di estrarre il numero del mese da una data che
riceve come parametro di input e restituisce tale valore in formato Integer.
 Nel seguente esempio di codice abbiamo scritto una semplice funzione che
restituisce il numero di giorni del mese a cui appartiene la data passata come
parametro alla funzione stessa.
Function GiorniMese(Data As Date) As Integer
Select Case Month(Data)
Case 1, 3, 5, 7, 8, 10, 12
GiorniMese = 31
Case 4, 6, 9, 11
GiorniMese = 30
Case 2
If IsBisestile(Data) Then
GiorniMese = 29
Else
GiorniMese = 28
End If
End Select
End Function
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005104
Funzioni Speciali
Gestione delle Date
 Day().
 La funzione Day() permette di estrarre il numero del giorno da
una data che riceve come parametro. Tale valore viene restituito
come al solito in formato Integer.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005105
Funzioni Speciali
Gestione delle Date
 Weekday().
 Questa funzione permette di ottenere un numero di tipo Integer che
indica il giorno della settimana relativo alla data ricevuta in input. I giorni
vengono rappresentati secondo il valore della tabella sottostante dove
sono indicate le relative costanti
Giorno Costante VBA
Domenica vbSunday
Lunedì vbMonday
Martedì vbTuesday
Mercoledì vbWednesday
Giovedì vbThursday
Venerdì vbFriday
Sabato vbSaturday
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005106
Funzioni Speciali
Gestione delle Date
 DateAdd().
 Restituisce un valore Variant (Date) contenente una data alla quale
è stato aggiunto un intervallo di tempo specificato. La sintassi di questa
funzione è la seguente
DateAdd(intervallo, numero, data)
 dove
 intervallo è un’espressione di tipo stringa corrispondente
all'intervallo di tempo che si desidera aggiungere,
 numero è un’ espressione numerica corrispondente al numero di
intervalli da aggiungere (può essere positiva, per ottenere date future,
oppure negativa, per ottenere date passate),
 data, infine, rappresenta un valore di tipo data o di tipo stringa che
rappresenta una data a cui viene aggiunto l'intervallo.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005107
Funzioni Speciali
Gestione delle Date
 DateAdd
 La funzione DateAdd consente di aggiungere o sottrarre da una data un
intervallo di tempo specificato. È, ad esempio, possibile utilizzare DateAdd per
determinare la data risultante dall'aggiunta di 30 giorni alla data odierna oppure
l'orario risultante dall'aggiunta di 45 minuti all'ora corrente.
 Per aggiungere giorni a date, è possibile utilizzare l'impostazione per il giorno
dell'anno ("y"), per il giorno ("d") o per il giorno della settimana ("w").
 La funzione DateAdd non restituisce una data non valida. In questo esempio,
alla data 31 gennaio viene aggiunto un mese:
DateAdd("m", 1, "31-gen-95")
 In questo caso, DateAdd restituirà 28-feb-95 e non 31-feb-95. Se date è 31-
gen-96, la funzione restituirà 29-feb-96, in quanto il 1996 è un anno bisestile.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005108
Funzioni Speciali
Gestione delle Date
 DateDiff().
 Restituisce un valore Variant(Long) corrispondente al numero di intervalli di
tempo tra due date specificate. La sintassi della funzione DateDiff è la
seguente
DateDiff(intervallo, data1, data2)
dove
 intervallo è un’espressione di tipo stringa corrispondente all'intervallo di
tempo utilizzato per calcolare la differenza tra data1 e data2.
 È possibile utilizzare la funzione DateDiff per determinare quanti intervalli di
tempo specificati esistono tra due date.
 Ad esempio possiamo utilizzare DateDiff per calcolare il numero di giorni che
intercorrono tra due date oppure il numero di settimane tra la data odierna e la
fine dell'anno.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005109
Funzioni Speciali
Gestione delle Date
 DateDiff
 Per ottenere il numero di giorni tra data1 e data2 è possibile utilizzare
sia l'impostazione del giorno dell'anno ("y") che quella del giorno ("d").
 Quando per intervallo viene impostato il giorno della settimana ("w"),
DateDiff restituisce il numero di settimane che intercorrono tra le due
date.
 Se data1 cade di lunedì, DateDiff conterà il numero di lunedì fino a
data2, includendo nel conteggio data2 ma non data1.
 Se per intervallo viene invece impostata la settimana ("ww"), la funzione
DateDiff restituirà il numero di settimane del calendario comprese tra
le due date.
 La funzione conterà il numero di domeniche che intercorrono tra data1 e
data2, includendo nel conteggio data2 se cade di domenica, ma non
data1, anche se cade di domenica.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005110
Funzioni Speciali
Gestione delle Date
 DateDiff
 Se data1 è successiva a data2, la funzione DateDiff restituirà un
numero negativo.
 Se data1 o data2 è un valore letterale di data, l'anno, se specificato,
diventa parte permanente della data. Se tuttavia data1 o data2 è
racchiuso tra virgolette doppie ("") e si omette l'anno, ogni volta che
l'espressione data1 o data2 viene valutata verrà inserito nel codice
l'anno corrente. Ciò rende possibile la scrittura di codice utilizzabile per
anni diversi.
 Va segnalato che quando si esegue il confronto tra il 31 dicembre e l'1
gennaio dell'anno immediatamente successivo, DateDiff utilizzata con
l'impostazione dell'anno ("yyyy") restituisce 1 anche se è trascorso un
solo giorno.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005111
Funzioni Speciali
Gestione delle Date
 Modalità con cui Excel interpreta le date ambigue
 Quando interpreta date ambigue, Excel procede per supposizioni.
 Ad esempio, quando si inserisce una data che include solo il mese e
una o due cifre, Excel assume che da 1 a 31 sia il giorno e che l'anno
sia l'anno corrente.
 Excel assume che 01 dicembre sia 1 dicembre dell'anno corrente, non
dicembre dell'anno 2001 oppure che dicembre 32 sia 1 dicembre 1932.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005112
Funzioni Speciali
Gestione delle Date
 Modalità secondo cui Excel interpreta gli anni a due cifre
 Per impostazione predefinita, quando si inserisce un valore di anno a due cifre,
Excel lo interpreta nel seguente modo:
 da 00 a 29 Excel interpreta i valori di anno a due cifre da 00 a 29 come gli
anni che vanno dal 2000 al 2029. Ad esempio, se si digita la data 28/5/19,
Excel assume che la data sia 28 maggio, 2019.
 da 30 a 99 Excel interpreta i valori anno a due cifre da 30 a 99 come gli anni
che vanno dal 1930 al 1999. Ad esempio, se si digita la data 28/5/98, Excel
assume che la data sia 28 maggio, 1998.
 In ogni caso è fortemente consigliabile introdurre sempre date con quattro cifre
per l’indicazione dell’anno anche se occorre essere consapevoli che questo
naturalmente renderà obsoleti i nostri programmi fra circa 8000 anni.
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005113
Bibliografia
 S. Benninga “Modelli Finanziari – La finanza con Excel”
McGraw-Hill (2001)
 U. Cherubini, G. Della Lunga “Matematica Finanziaria –
Applicazioni con VBA per Excel” McGraw-Hill (2001)
 U. Cherubini, G. Della Lunga “Il Rischio Finanziario”
McGraw-Hill (2000)
 E. Gaarder Haug “The Complete Guide to Option Pricing
Formulas” McGraw-Hill (1998)
 M. Jackson, M. Staunton “Advanced Modelling in
Finance using Excel and VBA” Wiley Finance (2001)

More Related Content

What's hot

Excel - introduzione e formule
Excel - introduzione e formuleExcel - introduzione e formule
Excel - introduzione e formuleSin Tesi Forma
 
I fondamenti di Excel - L'Essenza
I fondamenti di Excel - L'EssenzaI fondamenti di Excel - L'Essenza
I fondamenti di Excel - L'EssenzaMarco Parenzan
 
Excel... per nostalgici
Excel... per nostalgiciExcel... per nostalgici
Excel... per nostalgiciClaudio Locci
 
Informatica - uso di excel
Informatica - uso di excelInformatica - uso di excel
Informatica - uso di excelDario
 
Microsoft excel - didattica differenziata
Microsoft excel - didattica differenziataMicrosoft excel - didattica differenziata
Microsoft excel - didattica differenziataIacopo Pappalardo
 
Tipologie di dati
Tipologie di datiTipologie di dati
Tipologie di datiLorenz
 
Formattazione dei numeri
Formattazione dei numeriFormattazione dei numeri
Formattazione dei numeriLorenz
 
Word... per nostalgici
Word... per nostalgiciWord... per nostalgici
Word... per nostalgiciClaudio Locci
 
Slide riepilogo excel
Slide riepilogo excelSlide riepilogo excel
Slide riepilogo excelmarighella
 
Manuale Excel - Guida alla preparazione dell'esame ECDL
Manuale Excel - Guida alla preparazione dell'esame ECDLManuale Excel - Guida alla preparazione dell'esame ECDL
Manuale Excel - Guida alla preparazione dell'esame ECDLMatteo Olla
 
Excel Gratuito - Le Funzioni più Utili di Excel
Excel Gratuito - Le Funzioni più Utili di ExcelExcel Gratuito - Le Funzioni più Utili di Excel
Excel Gratuito - Le Funzioni più Utili di ExcelMatteo Olla
 
L'importanza di microsoft excel nel settore bancario
L'importanza di microsoft excel nel settore bancarioL'importanza di microsoft excel nel settore bancario
L'importanza di microsoft excel nel settore bancarioFrancesco Giuseppe Vetrano
 
(Ebook ita - inform - access) guida al database access (doc)
(Ebook   ita - inform - access) guida al database access (doc)(Ebook   ita - inform - access) guida al database access (doc)
(Ebook ita - inform - access) guida al database access (doc)UltraUploader
 
Tutto quello che non sapevi sulla stampa unione
Tutto quello che non sapevi sulla stampa unioneTutto quello che non sapevi sulla stampa unione
Tutto quello che non sapevi sulla stampa unionesuiteufficio
 

What's hot (19)

Excel development e sql 1.3
Excel development e sql   1.3Excel development e sql   1.3
Excel development e sql 1.3
 
Corso di Excel avanzato
Corso di Excel avanzatoCorso di Excel avanzato
Corso di Excel avanzato
 
EXCEL - LAVORARE con i FOGLI ELETTRONICI
EXCEL - LAVORARE con i FOGLI ELETTRONICIEXCEL - LAVORARE con i FOGLI ELETTRONICI
EXCEL - LAVORARE con i FOGLI ELETTRONICI
 
Excel - introduzione e formule
Excel - introduzione e formuleExcel - introduzione e formule
Excel - introduzione e formule
 
Excel development e sql 2.1
Excel development e sql   2.1Excel development e sql   2.1
Excel development e sql 2.1
 
I fondamenti di Excel - L'Essenza
I fondamenti di Excel - L'EssenzaI fondamenti di Excel - L'Essenza
I fondamenti di Excel - L'Essenza
 
Excel... per nostalgici
Excel... per nostalgiciExcel... per nostalgici
Excel... per nostalgici
 
Informatica - uso di excel
Informatica - uso di excelInformatica - uso di excel
Informatica - uso di excel
 
Microsoft excel - didattica differenziata
Microsoft excel - didattica differenziataMicrosoft excel - didattica differenziata
Microsoft excel - didattica differenziata
 
Tipologie di dati
Tipologie di datiTipologie di dati
Tipologie di dati
 
Formattazione dei numeri
Formattazione dei numeriFormattazione dei numeri
Formattazione dei numeri
 
Word... per nostalgici
Word... per nostalgiciWord... per nostalgici
Word... per nostalgici
 
Slide riepilogo excel
Slide riepilogo excelSlide riepilogo excel
Slide riepilogo excel
 
Manuale Excel - Guida alla preparazione dell'esame ECDL
Manuale Excel - Guida alla preparazione dell'esame ECDLManuale Excel - Guida alla preparazione dell'esame ECDL
Manuale Excel - Guida alla preparazione dell'esame ECDL
 
Excel Gratuito - Le Funzioni più Utili di Excel
Excel Gratuito - Le Funzioni più Utili di ExcelExcel Gratuito - Le Funzioni più Utili di Excel
Excel Gratuito - Le Funzioni più Utili di Excel
 
L'importanza di microsoft excel nel settore bancario
L'importanza di microsoft excel nel settore bancarioL'importanza di microsoft excel nel settore bancario
L'importanza di microsoft excel nel settore bancario
 
Database
DatabaseDatabase
Database
 
(Ebook ita - inform - access) guida al database access (doc)
(Ebook   ita - inform - access) guida al database access (doc)(Ebook   ita - inform - access) guida al database access (doc)
(Ebook ita - inform - access) guida al database access (doc)
 
Tutto quello che non sapevi sulla stampa unione
Tutto quello che non sapevi sulla stampa unioneTutto quello che non sapevi sulla stampa unione
Tutto quello che non sapevi sulla stampa unione
 

Viewers also liked

Capitolo 6 introduzione alle opzioni finanziarie
Capitolo 6   introduzione alle opzioni finanziarieCapitolo 6   introduzione alle opzioni finanziarie
Capitolo 6 introduzione alle opzioni finanziarieGiovanni Della Lunga
 
Capitolo 5 richiami prob. stat. mercati fin
Capitolo 5   richiami prob. stat. mercati finCapitolo 5   richiami prob. stat. mercati fin
Capitolo 5 richiami prob. stat. mercati finGiovanni Della Lunga
 
Capitolo 6a elementi di valutazione dei prodotti derivati
Capitolo 6a   elementi di valutazione dei prodotti derivatiCapitolo 6a   elementi di valutazione dei prodotti derivati
Capitolo 6a elementi di valutazione dei prodotti derivatiGiovanni Della Lunga
 
Capitolo 3 anagrafica titoli e mercati finanziari
Capitolo 3   anagrafica titoli e mercati finanziariCapitolo 3   anagrafica titoli e mercati finanziari
Capitolo 3 anagrafica titoli e mercati finanziariGiovanni Della Lunga
 

Viewers also liked (8)

Capitolo 6 introduzione alle opzioni finanziarie
Capitolo 6   introduzione alle opzioni finanziarieCapitolo 6   introduzione alle opzioni finanziarie
Capitolo 6 introduzione alle opzioni finanziarie
 
Capitolo 5 richiami prob. stat. mercati fin
Capitolo 5   richiami prob. stat. mercati finCapitolo 5   richiami prob. stat. mercati fin
Capitolo 5 richiami prob. stat. mercati fin
 
Capitolo 6a elementi di valutazione dei prodotti derivati
Capitolo 6a   elementi di valutazione dei prodotti derivatiCapitolo 6a   elementi di valutazione dei prodotti derivati
Capitolo 6a elementi di valutazione dei prodotti derivati
 
Capitolo 3 anagrafica titoli e mercati finanziari
Capitolo 3   anagrafica titoli e mercati finanziariCapitolo 3   anagrafica titoli e mercati finanziari
Capitolo 3 anagrafica titoli e mercati finanziari
 
Lezione 3 metodo monte carlo
Lezione 3   metodo monte carloLezione 3   metodo monte carlo
Lezione 3 metodo monte carlo
 
Capitolo 4 titoli obbligazionari
Capitolo 4   titoli obbligazionariCapitolo 4   titoli obbligazionari
Capitolo 4 titoli obbligazionari
 
American Options with Monte Carlo
American Options with Monte CarloAmerican Options with Monte Carlo
American Options with Monte Carlo
 
Simulation methods finance_2
Simulation methods finance_2Simulation methods finance_2
Simulation methods finance_2
 

Similar to Lezione 1

Similar to Lezione 1 (20)

L'importanza di microsoft excel nel settore bancario
L'importanza di microsoft excel nel settore bancarioL'importanza di microsoft excel nel settore bancario
L'importanza di microsoft excel nel settore bancario
 
L'importanza di microsoft excel nel settore bancario
L'importanza di microsoft excel nel settore bancarioL'importanza di microsoft excel nel settore bancario
L'importanza di microsoft excel nel settore bancario
 
Lezione 4 ogetti-vba
Lezione 4 ogetti-vbaLezione 4 ogetti-vba
Lezione 4 ogetti-vba
 
Data Base In Open Office
Data Base In Open OfficeData Base In Open Office
Data Base In Open Office
 
Il foglio elettronico a supporto dell’attività professionale [AP03-S]
Il foglio elettronico a supporto dell’attività professionale [AP03-S]Il foglio elettronico a supporto dell’attività professionale [AP03-S]
Il foglio elettronico a supporto dell’attività professionale [AP03-S]
 
Office & VBA - Giorno 7
Office & VBA - Giorno 7Office & VBA - Giorno 7
Office & VBA - Giorno 7
 
Sql 4
Sql 4Sql 4
Sql 4
 
corso web - Introduzione ai Database
corso web - Introduzione ai Databasecorso web - Introduzione ai Database
corso web - Introduzione ai Database
 
Excel v1.0
Excel v1.0Excel v1.0
Excel v1.0
 
SQL Server2000
SQL Server2000SQL Server2000
SQL Server2000
 
I riferimenti in Excel
I riferimenti in ExcelI riferimenti in Excel
I riferimenti in Excel
 
Modulo5
Modulo5Modulo5
Modulo5
 
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
 
Modello er (2)
Modello er (2)Modello er (2)
Modello er (2)
 
Fe01 1
Fe01 1Fe01 1
Fe01 1
 
Database relazionali
Database relazionaliDatabase relazionali
Database relazionali
 
Office & VBA - Giorno 6
Office & VBA - Giorno 6Office & VBA - Giorno 6
Office & VBA - Giorno 6
 
Laboratorio di Informatica - Lezione 5 (Classi V)
Laboratorio di Informatica - Lezione 5 (Classi V)Laboratorio di Informatica - Lezione 5 (Classi V)
Laboratorio di Informatica - Lezione 5 (Classi V)
 
Basi Di Dati 01
Basi Di Dati 01Basi Di Dati 01
Basi Di Dati 01
 
Database Design
Database DesignDatabase Design
Database Design
 

More from Giovanni Della Lunga (20)

Halloween Conference 2023 - Introduction to Deep Learning
Halloween Conference 2023 - Introduction to Deep LearningHalloween Conference 2023 - Introduction to Deep Learning
Halloween Conference 2023 - Introduction to Deep Learning
 
Copule slides
Copule slidesCopule slides
Copule slides
 
Introduction to python programming 2
Introduction to python programming   2Introduction to python programming   2
Introduction to python programming 2
 
Introduction to python programming 1
Introduction to python programming   1Introduction to python programming   1
Introduction to python programming 1
 
Cavalcando onde gravitazionali
Cavalcando onde gravitazionaliCavalcando onde gravitazionali
Cavalcando onde gravitazionali
 
Simulation methods finance_1
Simulation methods finance_1Simulation methods finance_1
Simulation methods finance_1
 
Viaggi nel tempo [2015 01 24]
Viaggi nel tempo [2015 01 24]Viaggi nel tempo [2015 01 24]
Viaggi nel tempo [2015 01 24]
 
Universo lato oscuro
Universo lato oscuroUniverso lato oscuro
Universo lato oscuro
 
Metodi numerici
Metodi numericiMetodi numerici
Metodi numerici
 
Breve intro caos
Breve intro caosBreve intro caos
Breve intro caos
 
Fg esercizi 4
Fg esercizi 4Fg esercizi 4
Fg esercizi 4
 
2 magnetismo
2 magnetismo2 magnetismo
2 magnetismo
 
1 elettrostatica
1 elettrostatica1 elettrostatica
1 elettrostatica
 
Fenomeni termici
Fenomeni termiciFenomeni termici
Fenomeni termici
 
1 meccanica fluidi
1 meccanica fluidi1 meccanica fluidi
1 meccanica fluidi
 
1 spazio tempo_movimento
1 spazio tempo_movimento1 spazio tempo_movimento
1 spazio tempo_movimento
 
2 principi dinamica
2 principi dinamica2 principi dinamica
2 principi dinamica
 
3 energia
3 energia3 energia
3 energia
 
Cinetica
CineticaCinetica
Cinetica
 
Lezione 2 alberi e differenze finite
Lezione 2   alberi e differenze finiteLezione 2   alberi e differenze finite
Lezione 2 alberi e differenze finite
 

Recently uploaded

Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaStefano Lariccia
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaStefano Lariccia
 

Recently uploaded (6)

Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
 

Lezione 1

  • 1. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic per Excel Giovanni Della Lunga
  • 2. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20052  Lavorare in Ambiente MS Excel  Le Macro di Excel  L’ambiente di Sviluppo del VBA  La Sintassi del VBA  Tipi di Dato e Operatori  Istruzioni di Controllo  Strutture Dati  Procedure  Gestire l’Interazione con Excel  Funzioni Speciali  Lavorare in Ambiente MS Excel  Le Macro di Excel  L’ambiente di Sviluppo del VBA  La Sintassi del VBA  Tipi di Dato e Operatori  Istruzioni di Controllo  Strutture Dati  Procedure  Gestire l’Interazione con Excel  Funzioni Speciali Elementi di Programmazione in Visual Basic per Excel
  • 3. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20053 Lavorare in Ambiente MS Excel  Dopo aver avviato Windows è possibile avviare EXCEL in vari modi:  Fare clic sul pulsante Avvio, quindi scegliere Programmi e cliccare su Microsoft® Excel.  Fare clic sulla relativa icona della Barra degli strumenti Office.  Fare doppio clic su una icona di cartella ottenuta precedentemente.  Per avviarlo in modo automatico ad ogni avvio del computer:  Scegliere Impostazioni dal menu Avvio di Windows, quindi fare clic su Barra delle applicazioni, sulla scheda Applicazioni del menu Avvio e quindi su Aggiungi.  Poi fare clic su Sfoglia e nell'elenco delle cartelle fare doppio clic sulle cartelle finché verrà aperta la cartella contenente il file di collegamento a Microsoft® Excel.  Infine fare clic su Avanti, specificare il nome da assegnare al collegamento digitare il nome del collegamento, ad esempio Microsoft® Excel, quindi fare clic su Fine.
  • 4. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20054 Lavorare in Ambiente MS Excel  All’avvio di EXCEL sarà visualizzata una nuova Cartella vuota.  Graficamente possono essere distinte, dall’alto in basso, le seguenti aree:  La Barra dei Menu, dai quali sono selezionabili i comandi  Le Barre degli Strumenti, che contengono una serie di pulsanti selezionabili tramite mouse e consentono d'accedere rapidamente ai comandi di frequente utilizzo.  La Barra del Titolo della finestra attiva.  L’Area di Lavoro suddivisa in righe e colonne.  Le Barre di Scorrimento, orizzontale e verticale, che permettono di visualizzare varie parti del foglio di lavoro non contenute nello schermo.  La Barra contenente le schede dei fogli.  La Barra di Stato, nella quale sono riportate le informazioni relative al documento attivo, o al comando evidenziato.
  • 5. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20055 Lavorare in Ambiente MS Excel Standard Formattazione Barra di scorrimento orizzontale Barra di scorrimento verticale Area di lavoro Barra del titolo Barra dei menu foglio di lavoro
  • 6. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20056 Lavorare in Ambiente MS Excel  In Microsoft Excel  I file vengono denominati Cartelle (Workbooks).  Le cartelle di lavoro possono essere costituite da più fogli di lavoro (Worksheets) e fogli grafici (Charts).  Collettivamente i fogli di lavoro e i fogli grafici vengono indicati con il termine Sheets.  In una cartella di lavoro attivare fogli differenti selezionando con il mouse le linguette dei fogli poste nella parte inferiore di ciascun foglio. Tali linguette vengono definite schede.
  • 7. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20057 Lavorare in Ambiente MS Excel  In Microsoft Excel  Il foglio correntemente selezionato viene definito Activeworksheet  Un foglio di lavoro è costituito da righe (identificate da numeri) e da colonne (identificate da lettere).  Le lettere di colonna vanno da A a IV. I numeri di riga vanno da 1 a 65536  L’intersezione di una riga e di una colonna individua una cella.  L'insieme delle celle è indicato con il termine cells  Una cella si indica: cells (“A1”) = cells (1,1)
  • 8. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20058 Lavorare in Ambiente MS Excel  Cartelle  Fogli  Grafici  Altri oggetti
  • 9. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-20059 Lavorare in Ambiente MS Excel Azione Operazione Aprire un File Premere con il mouse sul pulsante Apri della barra degli strumenti standard oppure selezionare la voce Apri dal menu File. Si aprirà un form di navigazione standard dal quale selezionare il file desiderato. Salvare un File Scegliere Salva dal menu File o, se si desidera cambiare nome, scegliere Salva con nome… anche in questo caso si aprirà un form di navigazione Windows col quale aprire la cartella nella quale salvare il nuovo file digitando il nome nell’apposita casella. Selezionare un foglio di lavoro Fare clic sulla scheda relativa Selezionare una cella Fare clic sulla cella Selezionare un intervallo di celle Tenendo premuto il pulsante del mouse trascinare da un angolo all’angolo opposto dell’intervallo di celle desiderato Assegnare un nome ad un intervallo di celle Selezionare la o le celle come descritto nei punti precedenti, dal menu Inserisci scegliere il sottomenu Nome e di questo la voce Definisci… nel form Definisci Nome digitare il nome nella casella “Nomi nella cartella di lavoro” Immettere dati Selezionare una cella e digitare i dati quindi premere INVIO o cambiare cella selezionata Scrivere una formula Digitare = e il resto della formula dopodiché premere INVIO
  • 10. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200510 Lavorare in Ambiente MS Excel  Inserire dati nelle celle e nella barra della formula  Per inserire un dato in una cella è sufficiente selezionare la cella e digitare. Durante la digitazione il dato appare sia all’interno della cella che nella barra della formula. Elenco Funzioni Inserisci Funzione
  • 11. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200511 Lavorare in Ambiente MS Excel  Tipi di file  Cartelle di lavoro – XLS  Modello – XLT  Una cartella di lavoro creata al fine di utilizzarla come base per altre cartelle di lavoro simili. È possibile creare modelli per le cartelle di lavoro e per i fogli di lavoro. Il modello predefinito per le cartelle di lavoro è denominato Cartel.xlt. Il modello predefinito per i fogli di lavoro è denominato Foglio.xlt.  Componenti aggiuntive - XLA  Applicazione supplementare che amplia le funzionalità dei programmi di Microsoft Office aggiungendo comandi personalizzati e caratteristiche specializzate.
  • 12. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200512  Lavorare in Ambiente MS Excel  Le Macro di Excel  L’ambiente di Sviluppo del VBA  La Sintassi del VBA  Tipi di Dato e Operatori  Istruzioni di Controllo  Strutture Dati  Procedure  Gestire l’Interazione con Excel  Funzioni Speciali  Lavorare in Ambiente MS Excel  Le Macro di Excel  L’ambiente di Sviluppo del VBA  La Sintassi del VBA  Tipi di Dato e Operatori  Istruzioni di Controllo  Strutture Dati  Procedure  Gestire l’Interazione con Excel  Funzioni Speciali Elementi di Programmazione in Visual Basic per Excel
  • 13. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200513 Le Macro di Excel  La costruzione e l'organizzazione di strutture dati non banali tramite Excel può comportare l'esecuzione da parte dell'utente di una discreta mole di operazioni, spesso ripetitive.  In questi casi può essere estremamente utile ricorrere al registratore di macro che permette di memorizzare una sequenza di operazioni al fine di poterle successivamente ripetere a richiesta.  Il registratore macro di Excel memorizza le operazioni eseguite dall’utente registrando gli equivalenti comandi sotto forma di istruzioni in linguaggio Visual Basic.  per questo motivo il registratore di macro oltre ad essere un utilissimo aiuto nella normale operatività con Excel costituisce anche un formidabile strumento didattico per cominciare a muoversi con la sintassi VBA.
  • 14. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200514 Le Macro di Excel
  • 15. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200515 Le Macro di Excel  Oltre a vedere la macro in esecuzione è possibile esaminare il codice prodotto e farlo girare istruzione per istruzione.  Quest’attività oltre al chiaro valore didattico ha un enorme utilità ai fini del test dei programmi prodotti (debug).
  • 16. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200516  Lavorare in Ambiente MS Excel  Le Macro di Excel  L’ambiente di Sviluppo del VBA  La Sintassi del VBA  Tipi di Dato e Operatori  Istruzioni di Controllo  Strutture Dati  Procedure  Gestire l’Interazione con Excel  Funzioni Speciali  Lavorare in Ambiente MS Excel  Le Macro di Excel  L’ambiente di Sviluppo del VBA  La Sintassi del VBA  Tipi di Dato e Operatori  Istruzioni di Controllo  Strutture Dati  Procedure  Gestire l’Interazione con Excel  Funzioni Speciali Elementi di Programmazione in Visual Basic per Excel
  • 17. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200517 L’Ambiente di Sviluppo del VBA  Il Visual Basic dispone di un ambiente di sviluppo integrato (IDE) attraverso il quale è possibile non solo modificare le macro ma scrivere interi programmi;  L’editor è composto da una serie di finestre tramite le quali controllare le varie fasi di sviluppo e test dell’applicazione;  Da Excel l’editor VBA può essere richiamato utilizzando la finestra VBA o premendo F11.
  • 18. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200518 GESTIONE PROGETTI. Questa sottofinestra contiene un diagramma ad albero delle cartelle di lavoro aperte e degli oggetti Excel in esse contenuti (oggetti, moduli, riferimenti, form e così via). Si userà la finestra gestione progetti per navigare fra i vari moduli ed altri oggetti di un progetto VBA FINESTRA PROPRIETA’. In questa finestra compare un elenco di tutte le proprietà dell’oggetto attualmente selezionato. FINESTRA DEL CODICE. La finestra del codice è quella in cui si può esaminare, modificare o creare ex-novo il codice sorgente VBA. Questa finestra viene usata per scrivere nuove macro o per editare macro esistenti. FINESTRA IMMEDIATA. In questa finestra è possibile inserire comandi diretti per la visualizzazione del valore assunto dalle variabili (usata in fase di debug) FINESTRA CONTROLLO. Consente il monitoraggio del contenuto di una variabile o dei valori generati da un’espressione (usata in fase di debug). Identifica un progetto VBA ovvero un insieme di oggetti e il nome fra parentesi è il nome della cartella in cui esso è memorizzato (in questo caso Cartel1); Identifica un oggetto di tipo foglio di lavoro contenuto nella cartella il cui nome appare fra parentesi; tutti i fogli di lavoro appaiono identificati dalla parola Foglio seguita da un numero, ma è importante non confonderlo con il nome che appare sul cavalierino nella finestra di Excel e che nella finestra Progetto appare fra parentesi; per ogni foglio di lavoro presente nella cartella sono presenti altrettante voci. Indica la cartella
  • 19. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200519
  • 20. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200520
  • 21. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200521  Un modulo è concettualmente simile ad un documento al cui interno si inseriscono i programmi o una loro parte.  La suddivisione di un programma su più moduli spesso è dovuta alla volontà del programmatore di suddividere su più parti il programma dividendolo con concetti di omogeneità;  per esempio si può avere un modulo con tutte le funzioni create che eseguono i calcoli finanziari…  …un altro con le routine che gestiscono l’accesso al database…  …un altro con le funzioni create ad uso generale come quelle che eseguono particolari elaborazioni sul testo mentre…  …un altro modulo contiene le routine principali del programma che richiamano quelle contenute negli altri moduli.  Un modulo è concettualmente simile ad un documento al cui interno si inseriscono i programmi o una loro parte.  La suddivisione di un programma su più moduli spesso è dovuta alla volontà del programmatore di suddividere su più parti il programma dividendolo con concetti di omogeneità;  per esempio si può avere un modulo con tutte le funzioni create che eseguono i calcoli finanziari…  …un altro con le routine che gestiscono l’accesso al database…  …un altro con le funzioni create ad uso generale come quelle che eseguono particolari elaborazioni sul testo mentre…  …un altro modulo contiene le routine principali del programma che richiamano quelle contenute negli altri moduli.
  • 22. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200522  Lavorare in Ambiente MS Excel  Le Macro di Excel  L’ambiente di Sviluppo del VBA  La Sintassi del VBA  Tipi di Dato e Operatori  Istruzioni di Controllo  Strutture Dati  Procedure  Gestire l’Interazione con Excel  Funzioni Speciali  Lavorare in Ambiente MS Excel  Le Macro di Excel  L’ambiente di Sviluppo del VBA  La Sintassi del VBA  Tipi di Dato e Operatori  Istruzioni di Controllo  Strutture Dati  Procedure  Gestire l’Interazione con Excel  Funzioni Speciali Elementi di Programmazione in Visual Basic per Excel
  • 23. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200523 La Sintassi del VBA  Il Visual Basic deriva la sua sintassi dal vecchio linguaggio basic;  Nel corso del tempo molte nuove strutture sintattiche sono state aggiunte al linguaggio trasformandolo in qualcosa di molto diverso rispetto all’originale;  In questa parte vedremo la componente convenzionale del linguaggio cioè le istruzioni base per la gestione del flusso del programma, i principali tipi di dato gestiti e la costruzione di procedure;  Nella prossima sezione vedremo la parte più innovativa di questo linguaggio e cioè la componente di interazione con Excel realizzata tramite componenti di programmazione orientata agli oggetti.
  • 24. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200524 La Sintassi del VBA: Tipi di Dato e Operatori  Anche Visual Basic, come tutti i linguaggi di programmazione, prevede l'uso delle variabili, mediante le quali è possibile memorizzare dei valori testuali o numerici in strutture a cui il programma può accedere grazie a un nome assegnato loro in fase di creazione.  Una variabile è detta locale quando è definita all'interno di una procedura;  La sua creazione avviene quando si fa riferimento ad essa per la prima volta, oppure quando è eseguita l'istruzione Dim, che presenta la seguente sintassi: Dim <nome> [As <tipo>] in cui <nome> rappresenta il nome da assegnare alla variabile.
  • 25. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200525 La Sintassi del VBA: Tipi di Dato e Operatori Tipo di dato è il termine che fa riferimento alla particolare natura dei dati che il VBA può memorizzare e manipolare quali testo o numeri. La tabella che segue elenca i tipi di dati supportati e indica lo spazio su disco e l'intervallo valido per ciascun tipo di dati. Tipo di dati Spazio su disco Intervallo Byte 1 byte Da 0 a 255 Boolean 2 byte True o False Integer 2 byte Da -32.768 a 32.767 Long 4 byte Da -2.147.483.648 a 2.147.483.6477 Single 4 byte Da -3,402823E38 a -1,401298E-45 per valori negativi; da 1,401298E-45 a 3,402823E38 per valori positivi Double 8 byte Da -1,79769313486232E308 a -4,94065645841247E-324 per valori negativi; da 4,94065645841247E-324 a 1,79769313486232E308 per valori positivi. Currency 8 byte Da -922.337.203.685.477,5808 a 922.337.203.685.477,5807 Decimal 14 byte +/-79.228.162.514.264.337.593.543.950.335 senza virgola; +/-7,9228162514264337593543950335 con 28 decimali; il numero minore diverso da zero è +/- 0,0000000000000000000000000001 Date 8 byte Dall'1 gennaio 100 al 31 dicembre 9999 Object 4 byte Qualsiasi riferimento Object String 10 byte + lunghezza stringa Da 0 a circa 2 miliardi Variant (con numeri) 16 byte Qualsiasi valore numerico fino all'intervallo di un Double Variant (con caratteri) 22 byte + lunghezza stringa Stesso intervallo di String a lunghezza variabile Definito dall'utente (utilizzando Type) Numero richiesto dagli elementi L'intervallo di ciascun elemento è identico a quello del relativo tipo di dati sopraelencato.
  • 26. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200526 La Sintassi del VBA: Tipi di Dato e Operatori  Tipi Numerici  Il Visual Basic fornisce per la gestione dei valori numerici varie possibilità che vanno di volta in volta scelte in accordo con il genere di informazione che deve essere memorizzata.  A prima vista potrebbe apparire più comodo impiegare tipi generici che vadano bene per qualunque occasione come il Double ma in realtà è sconsigliabile per vari motivi, soprattutto perché i tipi che supportano la parte decimale vengono elaborati ad una velocità inferiore a quella dei tipi che non la gestiscono quali i tipi Integer o Long.  Dim NumeroIntero as Integer  Dim NumeroReale as Single  NumeroIntero = 5  NumeroReale = 4.5
  • 27. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200527 La Sintassi del VBA: Tipi di Dato e Operatori  Tipo di dati in Excel:  Dati Numerici  Dalle Impostazioni internazionali nel pannello di controllo modificare  Per visualizzare i numeri in notazione scientifica ovvero 2.3 e non 2,3  Inoltre direttamente in excel (menu Formato, Celle) è possibile scegliere il tipo di notazione numerica.
  • 28. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200528 La Sintassi del VBA: Tipi di Dato e Operatori  Date  Il VBA usa il tipo dati Date per memorizzare data e ora. Il tipo Date utilizza 8 byte di memoria per ogni combinazione di data/ora.  Per assegnare un valore ad una variabile di tipo Date mediante un’istruzione, si deve ricorrere ad una sintassi particolare che prevede il racchiudere la data tra una coppia di caratteri #.  Per esempio il 31 dicembre 2005 può essere rappresentato come illustrato  Dim UltimoDellAnno as Date  UltimoDellAnno = #31/12/2005#
  • 29. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200529 La Sintassi del VBA: Tipi di Dato e Operatori  Stringhe  Per memorizzare dati testuali quali nomi, indirizzi, annotazioni o altro si ricorre al tipo String.  Facendo seguire la parola chiave String da un asterisco e un numero è possibile predeterminare una lunghezza per le stringhe in modo che il valore in esse inserito  se eccede la dimensione prevista venga troncato  se è inferiore vengano automaticamente inseriti degli spazi fino a raggiungere la lunghezza definita.  Dim Nome as String  Nome = “Giovanni”
  • 30. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200530 La Sintassi del VBA: Tipi di Dato e Operatori  Operatori Matematici  Gli operatori matematici sono quelli che indicano le principali operazioni matematiche e sono:  + : addizione  - : sottrazione  * : moltiplicazione  / : divisione  : divisione con restituzione della sola parte intera  ^ : elevazione a potenza  Sqr : radice quadrata  mod : resto di una divisione
  • 31. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200531 La Sintassi del VBA: Tipi di Dato e Operatori  Operatore di Assegnazione  L’operatore di assegnazione coincide graficamente con l’operatore di confronto di uguaglianza. Ciò non causa generalmente nessuna confusione nel programmatore che si abitua con una certa rapidità a riconoscerli e distinguerli nel loro significato.  L’unico aspetto che lascia momentaneamente confusi chi non ha mai avuto esperienze di sviluppo software è proprio il carattere uguale come operatore di assegnazione in quanto si tende a considerare l’uguale un’asserzione di uguaglianza fra il valore posto alla sua destra e quello posto alla sua sinistra  INCREMENTO DI UNA VARIABILE : a = a + 1
  • 32. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200532 La Sintassi del VBA: Tipi di Dato e Operatori  Operatori di Confronto Operatore Simbolo Esempio Applicabile a Minore < A < B qualunque Minore o uguale <= A <= B qualunque Uguale = A = B qualunque Diverso <> A <> B qualunque Maggiore > A > B qualunque Maggiore o uguale >= A >= B qualunque Identico tipo Is A Is B Object Analisi per criteri Like A Like B String
  • 33. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200533  Istruzioni Condizionali  Esecuzione di Cicli  Determinati  Condizionali La Sintassi del VBA: Istruzioni di Controllo
  • 34. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200534 La Sintassi del VBA: Istruzioni di Controllo  La condizione IF  Il flusso delle istruzioni all'interno della procedura non è necessariamente rigidamente definito, ma può variare in base al verificarsi di alcune condizioni.  Il programma deve pertanto essere in grado di prendere delle decisioni.  Come la quasi totalità dei linguaggi di programmazione, Visual Basic prevede a tal fine la struttura If, caratterizzata dalla seguente sintassi: If <condizione> Then <istruzioni da eseguire se la condizione è vera> [Else <istruzioni da eseguire se la condizione è falsa>] End If
  • 35. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200535 La Sintassi del VBA: Istruzioni di Controllo  La condizione può essere rappresentata da pressoché qualsiasi espressione booleana.  Si ricorda che un'espressione è così detta se può assumere solo due valori distinti, cioè vero o falso.  Se essa è verificata, l'interprete esegue il blocco di istruzioni indicato fra le parole chiave Then e Else. In caso contrario, è eseguito il secondo gruppo di comandi. Si noti che quest'ultimo può anche essere assente. In tal caso, la parola chiave Else non va utilizzata e non è eseguito alcun codice in caso di mancata verifica della condizione.  La frase End If delimita la struttura. Tutte le istruzioni che la seguono sono eseguite in modo indipendente dal valore dell'espressione booleana.
  • 36. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200536 La Sintassi del VBA: Istruzioni di Controllo  La struttura Select Case  E’ possibile ricorrere ad una diversa struttura di controllo denominata Select Case, la cui sintassi è la seguente: Select Case <variabile> Case <valore 1>: <blocco istruzioni 1> [Case <valore 2>: <blocco istruzioni 2>] .. [Case <valore n>: <blocco istruzioni n>] [Case Else: <istruzioni da eseguire se tutti i confronti falliscono>] End Select
  • 37. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200537 La Sintassi del VBA: Istruzioni di Controllo  La struttura Select Case è adatta ad essere utilizzata ogniqualvolta si desideri variare il flusso del programma in base al risultato del confronto fra il valore di una variabile e uno o più dati costanti.  Ognuno di essi deve essere preceduto dalla parola chiave Case e seguito dai due punti, nonché dal gruppo di istruzioni da eseguire quando il confronto ha esisto positivo.  Inoltre, è possibile utilizzare la clausola Case Else, che va obbligatoriamente posta alla fine della struttura, per definire un gruppo di istruzioni che deve essere eseguito solo se tutti i confronti hanno ottenuto un esito negativo.
  • 38. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200538 La Sintassi del VBA: Istruzioni di Controllo  Gli operatori logici elementari  Si ipotizzi di voler scrivere una struttura If per verificare se il valore di una variabile numerica intera, denominata n, appartiene all'intervallo compreso fra 10 e 100. È necessario valutare contemporaneamente due condizioni:  n deve essere maggiore di 10 E minore di 100  Per far sì che sia prodotta una stringa indicante l'esito del confronto, occorre digitare il seguente codice: If Numero > 10 then If Numero < 100 then Testo = "Il numero è compreso fra 10 e 100" Else Testo = "Il numero non appartiene all'intervallo" End if End if
  • 39. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200539 La Sintassi del VBA: Istruzioni di Controllo  L'operatore And  Spesso si rivela necessario valutare la contemporanea validità di due o più condizioni.  È il caso dell'esempio precedente, in cui si desidera verificare se la variabile Numero contiene un valore maggiore di 10 e nel contempo minore di 100.  L'operatore And assolve questo compito, restituendo il valore logico True solo se le condizioni a cui è applicato sono contemporaneamente verificate. Il codice può pertanto essere riscritto come segue: If (Numero > 10) AND (Numero < 100) Then Testo = "Il numero è compreso fra 10 e 100" Else Testo = "Il numero non appartiene all'intervallo" End if  Come è possibile notare, la struttura risulta più semplice, in quanto composta da un solo livello.
  • 40. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200540 La Sintassi del VBA: Istruzioni di Controllo  L'operatore Or  A differenza del precedente, l'operatore Or restituisce il valore logico True se almeno una delle condizioni specificate è vera. Ad esempio, la condizione  (Numero = 5) OR (Numero > 11) è verificata quando la variabile Numero assume un valore maggiore di 11 o uguale a 5.
  • 41. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200541 La Sintassi del VBA: Istruzioni di Controllo  L'operatore Not  Un altro utile operatore logico è quello di negazione (Not).  Come è facile dedurre, esso restituisce il valore True se la condizione a cui è applicato non è verificata, mentre restituisce False in caso contrario.  A titolo di esempio, si supponga di voler realizzare una struttura If in grado di generare una stringa indicate se il valore della variabile Numero risulta contemporaneamente diverso da 5 e da 10. Il codice da digitare è il seguente:  If NOT ((Numero = 5) Or (Numero = 10)) Then  Testo = "Il numero è diverso da 5 e da 10"  End if  Si noti la connessione con l’operatore And  If Numero <> 5 And Numero <> 10 Then  Testo = "Il numero è diverso da 5 e da 10"  End if
  • 42. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200542 La Sintassi del VBA: Istruzioni di Controllo  Il ciclo For  Si supponga di voler realizzare un programma in grado di calcolare il fattoriale di un numero, ovvero il prodotto di tutti i valori interi positivi minori o uguali ad esso.  Gli strumenti illustrati fino a questo punto non si rivelano sufficienti a tal fine, in quanto è necessaria la capacità di ripetere per un numero variabile di volte l'operazione di moltiplicazione.  Si impone pertanto il ricorso alle strutture di iterazione.  Nel caso dell'esempio, occorre applicare la moltiplicazione a tutti i numeri naturali minori o uguali a quello di cui si desidera calcolare il fattoriale.  Appare così evidente la necessità di disporre di una struttura in grado di permettere la ripetizione di una porzione di codice per un numero finito di volte.
  • 43. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200543 La Sintassi del VBA: Istruzioni di Controllo  Si tratta della classica struttura For, che nel caso di Visual Basic è caratterizzata dalla seguente sintassi: For <contatore> = <inizio> To <fine> [Step <passo>] <istruzione 1> ... <istruzione n> Next [<contatore>]  Dopo la parola chiave For è necessario far seguire una variabile intera, che funge da contatore.  Il suo valore è incrementato ad ogni ripetizione di un numero di unità pari a quello specificato dopo la parola chiave Step, fino al raggiungimento del valore finale;  questa condizione determina la fine delle iterazioni e il passaggio all'istruzione seguente la parola riservata Next.
  • 44. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200544 La Sintassi del VBA: Istruzioni di Controllo  Il ciclo While  Una diversa esigenza è quella soddisfatta dall'uso del ciclo While, che permette la ripetizione di un segmento di codice per tutto il tempo in cui una condizione risulta vera. La sua sintassi è la seguente: While <condizione> <istruzione 1> <istruzione 2> ... <istruzione n> Wend  Le istruzioni comprese fra le parole chiave While e Wend sono ripetute per un numero di volte non stabilito rigidamente a priori, bensì dipendente dalle stesse istruzioni, che devono essere in grado di fare in modo che la condizione ad un certo punto smetta di verificarsi. In caso contrario, si incappa in un errore molto diffuso fra i programmatori alle prime armi, ovvero si crea ciò che è usualmente detto ciclo infinito..
  • 45. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200545 La Sintassi del VBA: Istruzioni di Controllo  Le parole chiave Do e Loop  Il ciclo While può anche essere descritto in modo più elegante per mezzo delle parole chiave Do e Loop. In questo caso la sintassi diventa: Do While <condizione> <istruzione 1> <istruzione 2> ... <istruzione n> Loop  Il comportamento è analogo a quello visto in precedenza: le istruzioni contenute all'interno della struttura sono ripetute fintanto che la condizione indicata accanto alla parola While si verifica.
  • 46. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200546 La Sintassi del VBA: Istruzioni di Controllo  Il ciclo Do Until  Pressoché analogo è il ciclo Do Until, caratterizzato dalla seguente sintassi: Do Until <condizione> <istruzione 1> <istruzione 2> ... <istruzione n> Loop  In questo caso, le iterazioni avvengono quando la condizione è falsa e terminano quando essa si avvera.
  • 47. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200547 La Sintassi del VBA: Strutture Dati  Una struttura dati può essere immaginata come una collezione di dati.  Tanto per chiarirsi le idee facciamo un esempio pratico. Chi di noi non ha mai utilizzato un’agenda telefonica? Essa è a tutti gli effetti una struttura di dati perché colleziona informazioni di varia natura. L’agenda è suddivisa in pagine ognuna delle quali può contenere dei dati come: nome, cognome, indirizzo, numero telefonico, etc.  L’utilità di una simile struttura sta nel fatto che abbiamo la possibilità di risalire alle particolari informazioni che ci interessano anche quando gli elementi al suo interno sono molto numerosi. Inoltre qualora se ne presentasse la necessità dobbiamo avere la possibilità di aggiornare dei dati già esistenti oppure di introdurne dei nuovi.
  • 48. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200548 La Sintassi del VBA: Strutture Dati  Fra le strutture più note ce ne sono due predefinite nella maggior parte dei linguaggi di programmazione, le quali sono:  Array  Record  Gli Array sono strutture dati i cui elementi appartengono tutti allo stesso tipo mentre un record può essere composto da elementi di tipo diverso.
  • 49. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200549 La Sintassi del VBA: Strutture Dati  Gli array contengono dati omogenei, tipicamente si considerano array a una e due dimensioni ai quali ci riferiremo come di comune coi termini “vettore” e “matrice”. La dichiarazione di un vettore o di una matrice deve essere accompagnata dal numero di elementi.  Esempio:  Dim myVector(20) as Double  Dim myMatrix(10,10) as Integer  Nel primo caso abbiamo definito un vettore che contiene numeri in doppia precisione di 20 elementi, nel secondo abbiamo una matrice 10 x 10 di interi.
  • 50. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200550 La Sintassi del VBA: Strutture Dati  Descriviamo anche la sintassi in forma generica Dim NomeVariabile ([Indici]) [As Tipo] La sezione indici ha la seguente sintassi [minimo to] massimo [, [minimo to] massimo] che cosa vuol dire? E’ semplice, prima di tutto ricordiamo che tutto quello che si trova tra parentesi quadre è opzionale, quindi è possibile dimensionare un vettore sia scrivendo Dim myVector(20) As Double Sia scrivendo Dim myVector(1 to 10) As Double
  • 51. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200551 La Sintassi del VBA: Strutture Dati  In maniera analoga entrambe le dichiarazioni sono valide Dim myMatrix(10,10) As Integer Dim myMatrix(1 to 10, 1 to 10) As Integer  Notate che è richiesto solo il limite superiore; l’indicazione del valore minimo per l’indice è opzionale. Se si specifica solo il limite superiore il VBA numera gli elementi dell’array coerentemente con l’impostazione Option Base.  Questa è una direttiva al compilatore che specifica se si desidera che gli indici degli array partano da 0 o da 1. La sintassi è la seguente Option Base 0 | 1  In mancanza di questa istruzione l’interprete VBA fa partire la numerazione degli array da 0.
  • 52. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200552 La Sintassi del VBA: Strutture Dati  Il riferimento ad un generico elemento all’interno di un vettore o di una matrice avviene specificando l’indice all’interno di parentesi.  Esempio: a = myVector(5) b = myMatrix(7,6)  Nel primo caso alla variabile a viene assegnato il valore del 5° elemento del vettore myVector, nel secondo b è posto uguale all’elemento di matrice posto nella 7a riga, 6a colonna
  • 53. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200553 La Sintassi del VBA: Strutture Dati  In maniera analoga, ogni volta che si intende attribuire un valore ad un certo elemento di un array occorre specificare l’indice relativo. Ad esempio MyVector(7) = 8.9  Quando esegue questa istruzione il Visual Basic copia il valore 8.9 nell’elemento del vettore indicato, sostituendone il contenuto precedente.
  • 54. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200554 La Sintassi del VBA: Strutture Dati  Uno dei vantaggi principali dell’uso di array è la possibilità di utilizzare dei cicli per semplificare l’elaborazione dei diversi elementi che lo compongono. Ad esempio se vogliamo inizializzare a zero tutti gli elementi di un vettore di dimensione 10 possiamo semplicemente scrivere For i = 1 to 10 MyVector(i) = 0 Next
  • 55. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200555 La Sintassi del VBA: Strutture Dati  ... Oppure possiamo costruire una matrice identità For i = 1 to MaxNrRighe For j = 1 to MaxNrColonne If j = i then myMatrix(i, j) = 1 Else myMatrix(i, j) = 0 End If Next j Next i  Si noti che quando si utilizzano cicli For nidificati può essere utile riportare l’indice del ciclo accanto all’istruzione Next che chiude il ciclo stesso (questa indicazione è opzionale).
  • 56. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200556 La Sintassi del VBA: Strutture Dati  Array Statici e Dinamici  Array di questo tipo vengono detti statici perché il numero di elementi rimane costante in tutta la procedura.  Tuttavia vi sono molte situazioni in cui non è noto a priori il numero di elementi da salvare in un dato vettore o matrice.  In questi casi il VBA ci viene in aiuto con un tipo particolare di array, i cosiddetti array dinamici.  Queste strutture sono definite in modo da permettere alla procedura di cambiarne la dimensione durante l’esecuzione del programma.
  • 57. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200557 La Sintassi del VBA: Strutture Dati  Come abbiamo già accennato possono presentarsi delle situazioni in cui non è possibile o semplicemente non è conveniente fissare a priori il numero di elementi di un array cioè la sua dimensione.  L’uso di un array dinamico al posto di uno statico risolve questo problema in quanto un array dinamico può essere esteso o ridotto secondo le necessità.  Un array dinamico viene dichiarato tale facendo seguire il nome da una coppia di parentesi tonde vuote, ad esempio possiamo scrivere Dim Scadenze() As Date Dim Flussi() As Currency Dim Matrice() As Double
  • 58. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200558 La Sintassi del VBA: Strutture Dati  Un array così dichiarato non può venire utilizzato prima di averne stabilito almeno una volta le dimensioni. Questo si realizza tramite l’istruzione ReDim ReDim Scadenze(n) As Date ReDim Flussi(n) As Currency ReDim Matrice(m, m) As Double  Si noti che questo permette anche di dimensionare un array ad un valore che sarà noto solo durante l’esecuzione di una procedura.
  • 59. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200559 La Sintassi del VBA: Strutture Dati  Ad esempio supponiamo di scrivere un programma che chieda in input all’utente il numero di elementi da riservare per la memorizzazione di una serie di dati, in questo caso indicando con n la variabile letta dal programma potremmo scrivere   Dim n As Integer Dim Vettore() As Single n = InputBox(“Inserire il numero di elementi”) ReDim Vettore(1 To n) As Single
  • 60. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200560 La Sintassi del VBA: Strutture Dati  E’ possibile anche ridimensionare un array preservandone il contenuto. A tale scopo è necessario usare la clausola Preserve che va posta subito dopo la parola chiave ReDim, ad esempio   ReDim Preserve Vettore(n) As Single    Nel caso di un array multidimensionale, tuttavia, quando si usa la parola chiave Preserve si può modificare soltanto l’ultima dimensione.
  • 61. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200561 La Sintassi del VBA: Strutture Dati  Per riuscire a tenere traccia delle dimenzioni di array siano essi statici o dinamici il VBA prevede due funzioni, LBound e UBound, che restituiscono il valore minimo e massimo per gli indici di un array. La sintassi generica per queste funzioni è   LBound(NomeArray [, dimensione]) UBound(NomeArray [, dimensione])    dimensione è un numero intero che specifica per quale dimensione dell’array si vuole ottenere il limite minimo o massimo. Se non viene specificato VBA restituisce l’estremo relativo alla prima dimensione dell’array.
  • 62. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200562 La Sintassi del VBA: Strutture Dati  Spesso i dati possono essere aggregati in modo da avere variabili che contengono al loro interno altre variabili.  Ad esempio possiamo definire una variabile Opzione che contiene al suo interno gli attributi che caratterizzano questo tipo di oggetto.  L’istruzione Type serve a questo scopo Type Opzione Scadenza as Date Strike as Double Sottostante as Double Sigma as Double TassoRiskFree as Double End Type Si noti l’assenza dell’istruzione Dim a questo livello di definizione !
  • 63. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200563 La Sintassi del VBA: Strutture Dati  Possiamo così dichiarare una nuova variabile, ad esempio un’azione come un generico titolo  Dim OPT_ENEL_150305 As Opzione  E’ possibile accedere ai singoli attributi del titolo (campi) con la seguente sintassi  ValoreSottostante = OPT_ENEL_150305.Sottostante
  • 64. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200564 La Sintassi del VBA: Strutture Dati  With  L’istruzione With può essere applicata in vari contesti per migliorare la leggibilità di istruzioni che operino sullo stesso oggetto.  Essa permette di riportare un’unica volta il nome dell’oggetto e sulle righe successive abbreviare quest’ultimo con il carattere punto.  Esempio: With OPT_ENEL_150305 ValoreSottostante = .Sottostante Volatilita = .Sigma Expiration = .Scadenza End With
  • 65. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200565 La Sintassi del VBA: Procedure  Una procedura è una frazione di codice che esegue un determinato compito il più possibile elementare;  Con Visual Basic è possibile creare due tipi di procedure:  procedure di tipo Sub (SUBROUTINE)  procedure di tipo Function. (FUNZIONI)  A differenza di altri linguaggi il Visual Basic distingue nettamente queste due diverse tipologie di procedura;
  • 66. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200566 La Sintassi del VBA: Procedure  Una procedura Sub (subroutine) è un’unità di codice racchiusa fra le istruzioni Sub … End Sub.  La procedura di tipo subroutine esegue un compito ma non restituisce alcun valore.  Esempio Sub CalcolaQuadrato(x as Double, res as Double) res = x * x     End Sub
  • 67. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200567 La Sintassi del VBA: Procedure  Una procedura Function è un’unità di codice racchiusa fra le istruzioni Function e End Function.  Come una procedura Sub una procedura Function esegue un preciso compito. A differenza della procedura Sub tuttavia essa restituisce anche un valore.  Esempio Function CalcolaQuadrato(x as Double) as Double CalcolaQuadrato = x*x              End Function
  • 68. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200568 La Sintassi del VBA: Procedure  Le funzioni e le subroutine possono prendere in input dei parametri (detti argomenti della funzione).  Questi parametri sono dei valori che la funzione o la subroutine riceve per la propria elaborazione e sono indicati fra le parentesi tonde nella riga di dichiarazione della funzione.
  • 69. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200569 La Sintassi del VBA: Procedure  Subroutine e Funzioni: La differenza   Public Sub ProceduraSub()  MsgBox “Questa procedura è una subroutine” End Sub  Public Function ProceduraFun() As String ProceduraFun = “La procedura che ha generato _ questo risultato è una funzione” End Function   
  • 70. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200570 La Sintassi del VBA: Procedure  La sintassi dell’istruzione Sub è la seguente [Private|Public|Friend][Static] Sub <Nome> [(elencoargomenti)] [istruzioni] [Exit Sub] [istruzioni] End Sub  La sintassi dell'istruzione Sub è composta dalle seguenti parti:  Public (Facoltativa). Indica che la routine Sub è accessibile per tutte le altre routine in tutti i moduli. Se utilizzata in un modulo che include un'istruzione Option Private, la routine non sarà disponibile esternamente al progetto.  Private (Facoltativa). Indica che la routine Sub è accessibile solo per le altre routine incluse nel modulo in cui è stata dichiarata.  Static (Facoltativa). Indica che le variabili locali della routine Sub vengono conservate durante le chiamate. L'attributo Static non influisce sulle variabili dichiarate al di fuori della routine Sub, anche se vengono utilizzate nella routine stessa.  Nome (Obbligatoria). Nome della routine Sub, espresso in base alle convenzioni di denominazione standard delle variabili.  elencoargomenti (Facoltativa). Elenco delle variabili che rappresentano gli argomenti passati alla routine Sub , quando questa viene richiamata. Le variabili multiple sono separate da virgole.  istruzioni (Facoltativa). Qualsiasi gruppo di istruzioni da eseguire nel corpo della routine Sub.
  • 71. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200571 La Sintassi del VBA: Procedure  La sintassi generale per una funzione è leggermente più articolata di quella per una subroutine   [Public | Private] Function <Nome> ([Elenco Argomenti]) [As Tipo]   ‘ Istruzioni VBA   Nome = Espressione   End Function    Ogni funzione inizia con la parola chiave Function seguita dal nome della procedura stessa, sopra indicato con Nome.  Dopo il nome della funzione abbiamo l’elenco degli argomenti della funzione racchiusi fra parentesi tonde. Se esistono degli argomenti questi vanno specificati all’interno delle parentesi tonde separati da virgole.
  • 72. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200572 La Sintassi del VBA: Procedure  Ritorno di valori da una procedura Function  Di solito lo scopo di una funzione è quello di eseguire alcuni calcoli o delle operazioni specifiche su un insieme di dati e di restituire il risultato di queste operazioni.  All’interno del corpo della funzione la riga Nome = Espressione   rappresenta l’assegnamento della funzione.  Perché una funzione restituisca un valore essa deve sempre includere un’istruzione che assegni un valore al nome della funzione.  Nella sintassi del Visual Basic questo si ottiene assegnando il valore che si vuole restituire al programma chiamante ad una variabile fittizia che ha lo stesso nome della funzione ma che non viene dichiarata in alcun luogo.
  • 73. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200573 La Sintassi del VBA: Funzioni di Interazione con l’Utente  InputBox  La sintassi generale completa per la funzione InputBox è la seguente InputBox(Messaggio [, Titolo, Default, XPos, YPos, FileAiuto, Contesto])    La variabile Messaggio è una qualsiasi espressione di tipo String ed è l’unico argomento obbligatorio per la funzione InputBox e serve per indicare all’utente quale informazione deve inserire, tutti gli altri argomenti sono opzionali (e come tali sono riportati fra parentesi quadre nella descrizione della sintassi).  Titolo è una variabile di tipo String che serve per definire il titolo della finestra di dialogo. n = InputBox("Domanda", "Titolo", 0)
  • 74. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200574 La Sintassi del VBA: Funzioni di Interazione con l’Utente  MsgBox  La sintassi generale completa per la funzione MsgBox è la seguente   MsgBox Messaggio [, Pulsanti, Titolo, FileAiuto, Contesto]    L’unico argomento obbligatorio per MsgBox è la variabile Messaggio che può essere una qualunque espressione, gli altri argomenti sono opzionali.  L’argomento Pulsanti è un’espressione numerica che specifica quanti e quali pulsanti appaiono nella finestra di dialogo di MsgBox. Questa variabile specifica anche il pulsante di default nella finestra e se la finestra contiene delle icone per i messaggi critici di informazione, di avviso o di richiesta di Windows. MsgBox "Messaggio di Errore", vbCritical + vbYesNoCancel, "Titolo Finestra"
  • 75. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200575 La Sintassi del VBA: Funzioni Definite dall’Utente  Le funzioni che utilizzano alcune restrizioni sulle proprie procedure di calcolo vengono dette funzioni definite dall’utente e sono le uniche procedure che Excel può utilizzare nelle formule contenute nelle celle dei fogli di lavoro.  Una funzione definita dall’utente non può selezionare, inserire, eliminare o cambiare formato a nessun dato contenuto in un foglio di lavoro, inoltre essa non può aggiungere, eliminare o rinominare i fogli e/o le cartelle di lavoro.  In altre parole le funzioni definite dall’utente possono soltanto eseguire dei calcoli o delle manipolazioni su dati ricevuti attraverso l’elenco degli argomenti o su dati recuperati dai fogli Excel.
  • 76. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200576 La Sintassi del VBA: Funzioni Definite dall’Utente  Parametri Opzionali  Ci sono diverse circostanze in cui può essere utile scrivere una funzione in cui il numero di parametri da richiedere all’utente non sia rigidamente prefissato.  Nel caso delle funzioni predefinite del Visual Basic, ad esempio, questa circostanza più che l’eccezione rappresenta quasi la regola. Pensiamo ad una funzione VBA nativa come InputBox che richiede in generale sette parametri ma che può essere richiamata con un solo parametro, il messaggio che compare nella finestra di dialogo, essendo gli altri sei opzionali.  Per creare parametri di questo tipo, ovverosia parametri che possono essere inseriti oppure omessi in relazione alle diverse esigenze, si utilizza la parola chiave Optional che va anteposta ad ognuno di essi nella dichiarazione della funzione. Function Test(x as Double, Optional y as Double [= 0])
  • 77. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200577 La Sintassi del VBA: Funzioni Definite dall’Utente  Option Pricing con Black & Scholes Function D_1(S As Single, K As Single, T As Single, _      Sigma As Single, r As Single, _             Optional q As Single = 0) As Single D_1 = (Log(S/K)+(r–q+0.5*Sigma*Sigma)*T)/(Sigma*Sqr(T)) End Function T Tqr K S d σ σ       +−+      = 2 1 2 1 ln Valore di default
  • 78. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200578 La Sintassi del VBA: Funzioni Definite dall’Utente  Option Pricing con Black & Scholes Function D_2(S As Single, K As Single, T As Single, _      Sigma As Single, r As Single, _             Optional q As Single = 0) As Single D_2 = (Log(S/K)+(r–q-0.5*Sigma*Sigma)*T)/(Sigma*Sqr(T)) End Function T Tqr K S d σ σ       −−+      = 2 2 2 1 ln
  • 79. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200579 La Sintassi del VBA: Funzioni Definite dall’Utente  Option Pricing con Black & Scholes Public Function BS(TipoOpzione As Integer, _             Sottostante As Double, _             Strike As Double, _             Scadenza As Double, _             Sigma As Double, _             TassoRiskFree As Double, _             Optional Tasso As Double = 0) As Double       Dim d1 As Double     Dim d2 As Double        d1 = D_1(Sottostante, Strike, Scadenza, Sigma, TassoRiskFree, Tasso)     d2 = D_2(Sottostante, Strike, Scadenza, Sigma, TassoRiskFree, Tasso)     Select Case TipoOpzione     Case 1 ' opzione di tipo call         BS = Sottostante * Exp(-Scadenza * Tasso) * Application.NormSDist(d1) _                      - Strike * Exp(-Scadenza * TassoRiskFree) *  Application.NormSDist(d2)     Case -1 ' opzione di tipo put         BS = -Sottostante * Exp(-Scadenza * Tasso) * Application.NormSDist(-d1) _                      + Strike * Exp(-Scadenza * TassoRiskFree) * Application.NormSDist(-d2)     End Select End Function )()( )()( 21 21 dNKedNSep dNKedNSec rTqT rTqT −+−−= −= −− −−
  • 80. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200580 La Sintassi del VBA: Funzioni Definite dall’Utente  Application.Worksheetfunction  Si noti che da VBA tramite l’oggetto Application è possibile utilizzare tutte le funzioni di Excel!  Nell’esempio abbiamo utilizzato la funzione che calcola la distribuzione cumulata della normale standard BS = Sottostante * Exp(-Scadenza * Tasso) * Application.NormSDist(d1) _                      - Strike * Exp(-Scadenza * TassoRiskFree) *   Application.NormSDist(d2)
  • 81. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200581  Lavorare in Ambiente MS Excel  Le Macro di Excel  L’ambiente di Sviluppo del VBA  La Sintassi del VBA  Tipi di Dato e Operatori  Istruzioni di Controllo  Strutture Dati  Procedure  Gestire l’Interazione con Excel  Funzioni Speciali  Lavorare in Ambiente MS Excel  Le Macro di Excel  L’ambiente di Sviluppo del VBA  La Sintassi del VBA  Tipi di Dato e Operatori  Istruzioni di Controllo  Strutture Dati  Procedure  Gestire l’Interazione con Excel  Funzioni Speciali Elementi di Programmazione in Visual Basic per Excel
  • 82. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200582 Gestire l’Interazione con Excel  Le caratteristiche sintattiche del VBA viste fino a questo punto riguardano tecniche di programmazione convenzionale;  Il punto realmente innovativo del VBA consiste nella possibilità di interagire dinamicamente con i dati presenti nei foglio Excel  Un’applicazione VBA per Excel si caratterizza quindi a livello progettuale distinguendo chiaramente tre fasi  INPUT – in questa fase si raccolgono i dati necessari all’elaborazione da uno o più fogli Excel, eventualmente si possono raccogliere altri dati utilizzando la funzione InputBox o appositi form costruiti dall’utente (vedi oltre);  ELABORAZIONE – questa è la parte di calcolo convenzionale all’interno della quale possono essere presenti anche procedure di elaborazione dati realizzate in altri linguaggi (es. C/C++) al fine di ottimizzare i tempi di elaborazione;  OUTPUT – Il risultato del calcolo solitamente viene riportato nelle celle del foglio di lavoro ed eventualmente riportato in grafico.
  • 83. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200583 Gestire l’Interazione con Excel Oggetti di Excel Organizzazione Gerarchica Gli oggetti sono raggruppati in collezioni Gli oggetti hanno proprietà specifiche Gli oggetti hanno metodi specifici
  • 84. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200584 Gestire l’Interazione con Excel  Gli oggetti di Excel (così come quelli delle altre applicazioni Microsoft Office) sono raggruppati in classi organizzate in modo gerarchico. Ogni classe di oggetti a sua volta può contenere una o più sottoclassi.  La gerarchia vede al livello più alto l’oggetto Application che rappresenta l’applicazione stessa.  E’ facile rendersi conto che all’interno dell’applicazione molti oggetti sono dello stesso tipo essendo distinti solo da un nome univoco o da un indice di riferimento; si pensi ad esempio ai vari fogli che compaiono all’interno di una cartella di lavoro. Questi oggetti formano una collezione o insieme di oggetti.
  • 85. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200585 Gestire l’Interazione con Excel  Gerarchie, Nomi e Collezioni  Application.Workbooks(“Esempi.xls”).Worksheets(“Foglio1”).Range(“S0”)  Se siamo nel file Esempi.xls...  Worksheets(“Foglio1”).Range(“S0”)  Se siamo nel foglio 1...  Range(“S0”)
  • 86. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200586 Gestire l’Interazione con Excel  Le collezioni sono sempre individuate da nomi al plurale. Ad esempio in Excel l’insieme Workbooks rappresenta tutte le cartelle di lavoro correntemente aperte. All’interno di ogni oggetto Workbook è disponibile un insieme di oggetti Worksheet (i fogli di lavoro), tale insieme è identificato dal nome Worksheets.  Tutti gli insiemi in Microsoft Office consentono di accedere a ciascun elemento nell’insieme oltre che al numero di oggetti dell’insieme.  Per accedere ad un singolo oggetto in un insieme in Visual Basic è sufficiente digitare il nome dell’insieme seguito dal valore di un indice univoco di riferimento (che può essere un nome o un numero) compreso fra parentesi tonde.  Ad esempio se intendiamo riferirci al foglio denominato “Foglio1” di una generica cartella di lavoro, possiamo utilizzare l’insieme Worksheets con la seguente sintassi: Worksheets(“Foglio1”) oppure Worksheets(1).
  • 87. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200587 Gestire l’Interazione con Excel  Ogni oggetto Microsoft Office può contenere proprietà, metodi o eventi.  Una proprietà è un attributo caratteristico che definisce o descrive un oggetto, come la dimensione di una cella, la posizione di una finestra di dialogo o la sua forma.  I metodi (come abbiamo già detto) sono azioni che è possibile eseguire sull’oggetto o tramite esso. Ad esempio sono metodi della cartella il salvataggio su disco, l’eliminazione di dati la chiusura della cartella stessa.  Gli eventi sono frammenti di codice che vengono eseguiti in corrispondenza di eventi intercettati dal sistema operativo (es. click sul mouse).  Nella maggior parte dei casi è possibile ottenere il valore di una proprietà e/o importarla con un determinato valore (tuttavia esistono anche proprietà di sola lettura).  Per impostare una proprietà se ne definisce il valore tramite l’operatore di assegnazione.  Per ottenere il valore di una proprietà è sufficiente specificare la proprietà e, nella maggior parte dei casi, assegnarla ad una variabile temporanea.
  • 88. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200588 Gestire l’Interazione con Excel  La sintassi per specificare una proprietà o un metodo è la stessa Oggetto.Identificatore dove  Oggetto è un qualsiasi riferimento valido ad un oggetto e  Identificatore è un qualsiasi nome valido di una proprietà o di un metodo.  Notate che un punto (.) separa il riferimento all’oggetto dal nome della proprietà o del metodo.
  • 89. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200589 Gestire l’Interazione con Excel  Durante la scrittura del codice ogni volta che desiderate invocare una proprietà o un metodo il VBA visualizza accanto al punto una finestra in cui compaiono i nomi delle proprietà e dei metodi dell’oggetto corrente.  I metodi vengono identificati da un blocchetto verde mentre le proprietà sono indicate da un’icona a forma di lista con un indice che punta ad un elemento.
  • 90. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200590 Gestire l’Interazione con Excel  Pulsanti di Comando  I pulsanti di comando non solo possono attivare un evento quando vi si preme sopra con il mouse ma rispondono anche ad altri eventi come ad esempio il semplice spostamento del mouse sopra il pulsante.  Dato che i pulsanti di comando possono rispondere ad un complesso sistema di eventi (questa come vedremo è la regola piuttosto che l’eccezione per tutti i comandi) è necessario un modo completamente nuovo per collegare una macro ad un pulsante.  Questo nuovo approccio utilizza quelle che vengono chiamate routine di gestione degli eventi.  Queste routine sono speciali macro, collegate ad un oggetto, per esempio ad un pulsante di comando.
  • 91. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200591 Gestire l’Interazione con Excel  Finestra Proprietà di un Pulsante di Comando
  • 92. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200592 Gestire l’Interazione con Excel  Macro Gestione Evento Associata ad un Pulsante di Comando
  • 93. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200593 Gestire l’Interazione con Excel  La scatola degli attrezzi
  • 94. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200594 Gestire l’Interazione con Excel  Range  Gli oggetti Range sono probabilmente la classe di oggetti più importante di Excel.  Negli intervalli, cioè nei Range, si inseriscono i valori, le formule.  Intervalli di valori sono alla base della produzione di report e grafici.  Le tabelle pivot vengono manipolate mediante intervalli.  Excel possiede tre proprietà che vedono un intervallo come se fosse una collezione di oggetti:  la proprietà Cells (che restituisce un insieme di celle);  la proprietà Rows (restituisce un insieme di righe);  la proprietà Columns (restituisce un insieme di colonne);  Queste non sono comunque classi separate in quanto il tipo di dato di una qualunque di queste proprietà è sempre un oggetto Range.  L’identificazione di una singola cella può avvenire indicandone il numero di riga e il numero di colonna come se si trattasse del singolo elemento di una matrice corrispondente all’intero foglio di lavoro.
  • 95. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200595 Gestire l’Interazione con Excel: Mettiamo Insieme Funzioni e Fogli di Lavoro  Riscriviamo le nostre funzioni in forma più compatta utilizzando un tipo dati definito dall’ utente (struttura) Type Opzione S As Double ' valore del sottostante K As Double ' prezzo di esercizio (strike) T As Double ' scadenza espressa in anni r As Double ' tasso risk free q As Double ' tasso aggiustamento misura Sigma As Double ' volatilità sottostante Payoff As Integer ' tipo payoff (call/put) Esercizio As Integer ' tipo Esercizio (eur/ame) End Type
  • 96. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200596 Gestire l’Interazione con Excel: Mettiamo Insieme Funzioni e Fogli di Lavoro Public Function BS(Opt As Opzione) As Double Dim d1 As Double Dim d2 As Double d1 = D_1(Opt) d2 = D_2(Opt) With Opt Select Case .Payoff Case OPTCALL BS = .S * Exp(-.q * .T) * Application.NormSDist(d1) _ -.K * Exp(-.r * .T) * Application.NormSDist(d2) Case OPTPUT BS = -.S * Exp(-.q * .T) * Application.NormSDist(-d1) _ +.K * Exp(-.r * .T) * Application.NormSDist(-d2) End Select End With End Function
  • 97. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200597 Gestire l’Interazione con Excel: Mettiamo Insieme Funzioni e Fogli di Lavoro  La funzione così scritta non è più una “Funzione definita dall’utente” e quindi non può essere inserita direttamente in una cella del foglio Excel;  Per lanciare il calcolo dobbiamo richiamarla da un programma VBA;  Questo programma può essere ad esempio la macro collegata all’evento click di un pulsante di comando  Vediamo un esempio concreto... Esempio 1_3.xls
  • 98. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200598 Alcune Osservazioni sullo Sviluppo di Applicazioni in VBA  Vantaggi  Rispetto all’inserimento diretto di una formula nel foglio Excel, lo sviluppo di funzioni in VBA permette una maggiore chiarezza di sviluppo e ua maggior rubostezza rispetto agli errori;  Maggiore portabilità  Maggiore estendibilità  In altre parole maggiore manutenibilità del codice  Svantaggi  Il VBA è un linguaggio interpretato e non particolarmente performante quando si tratta di eseguire calcoli numerici. Occorre sempre tener presente questa limitazione quando si deve scegliere il linguaggio di sviluppo di un algoritmo.  Tuttavia questa limitazione è effettivamente importante in un numero limitato di casi e comunque la conoscenza della programmazione in VBA è comunque un elemento utile in quanto permette di gestire l’interazione con Excel e di sviluppare (tramite DLL) gli algoritmi nel linguaggio più appropriato.
  • 99. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-200599 Gestire l’Interazione con Excel  User Form Premere con il tasto destro sul nodo del VBA Project al quale vogliamo aggiungere il form
  • 100. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005100 Gestire l’Interazione con Excel Alcuni fra gli eventi più comuni dell’oggetto UserForm Evento Quando Avviene Activate Questo evento viene scatenato ogni volta che la finestra diventa attiva cioè passa in primo piano. Questo evento è molto utile ogniqualvolta si renda necessario aggiornare il contenuto dei controlli in modo da riflettere i cambiamenti che possono essere intervenuti quando la finestra non era attiva. Click E’ l’evento che si genera ogni volta che l’utente preme con il mouse sulla superficie della finestra. Initialize Questo evento si genera quando l’oggetto finestra viene caricato in memoria. Come vedremo questo evento può essere scatenato dall’istruzione Load o dal metodo Show. Questo evento si utilizza per impostare l’aspetto iniziale della finestra e i controlli eventualmente contenuti nel form. Nel nostro esempio utilizzeremo questo evento per caricare una serie di valori predefiniti in un combo box all’interno della finestra di dialogo. Terminate Evento scatenato quando l’oggetto finestra viene scaricato dalla memoria. Questo evento viene utilizzato in tutte quelle circostanze ove si rende necessario liberare le variabili dell’oggetto prima di chiudere quest’ultimo.
  • 101. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005101  Lavorare in Ambiente MS Excel  Le Macro di Excel  L’ambiente di Sviluppo del VBA  La Sintassi del VBA  Tipi di Dato e Operatori  Istruzioni di Controllo  Strutture Dati  Procedure  Gestire l’Interazione con Excel  Funzioni Speciali  Lavorare in Ambiente MS Excel  Le Macro di Excel  L’ambiente di Sviluppo del VBA  La Sintassi del VBA  Tipi di Dato e Operatori  Istruzioni di Controllo  Strutture Dati  Procedure  Gestire l’Interazione con Excel  Funzioni Speciali Elementi di Programmazione in Visual Basic per Excel
  • 102. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005102 Funzioni Speciali Gestione delle Date  Year().  Questa funzione restituisce in output un numero intero (di tipo Integer) che contiene l’anno estratto da una data che riceve come parametro di input.  Nel riquadro seguente vediamo un esempio di impiego della funzione Year. Supponiamo di voler costruire una funzione che prenda come parametro di input una data e che restituisca un valore logico vero o falso a seconda che l’anno della data sia o meno bisestile. Function IsBisestile(Data As Date) As Boolean If (Year(Date) Mod 100 <> 0 And Year(Date) Mod 4 = 0) Or _ (Year(Date) Mod 100 = 0 And Year(Date) Mod 400 = 0) Then IsBisestile = True Else IsBisestile = False End If End Function
  • 103. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005103 Funzioni Speciali Gestione delle Date  Month().  Questa funzione permette di estrarre il numero del mese da una data che riceve come parametro di input e restituisce tale valore in formato Integer.  Nel seguente esempio di codice abbiamo scritto una semplice funzione che restituisce il numero di giorni del mese a cui appartiene la data passata come parametro alla funzione stessa. Function GiorniMese(Data As Date) As Integer Select Case Month(Data) Case 1, 3, 5, 7, 8, 10, 12 GiorniMese = 31 Case 4, 6, 9, 11 GiorniMese = 30 Case 2 If IsBisestile(Data) Then GiorniMese = 29 Else GiorniMese = 28 End If End Select End Function
  • 104. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005104 Funzioni Speciali Gestione delle Date  Day().  La funzione Day() permette di estrarre il numero del giorno da una data che riceve come parametro. Tale valore viene restituito come al solito in formato Integer.
  • 105. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005105 Funzioni Speciali Gestione delle Date  Weekday().  Questa funzione permette di ottenere un numero di tipo Integer che indica il giorno della settimana relativo alla data ricevuta in input. I giorni vengono rappresentati secondo il valore della tabella sottostante dove sono indicate le relative costanti Giorno Costante VBA Domenica vbSunday Lunedì vbMonday Martedì vbTuesday Mercoledì vbWednesday Giovedì vbThursday Venerdì vbFriday Sabato vbSaturday
  • 106. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005106 Funzioni Speciali Gestione delle Date  DateAdd().  Restituisce un valore Variant (Date) contenente una data alla quale è stato aggiunto un intervallo di tempo specificato. La sintassi di questa funzione è la seguente DateAdd(intervallo, numero, data)  dove  intervallo è un’espressione di tipo stringa corrispondente all'intervallo di tempo che si desidera aggiungere,  numero è un’ espressione numerica corrispondente al numero di intervalli da aggiungere (può essere positiva, per ottenere date future, oppure negativa, per ottenere date passate),  data, infine, rappresenta un valore di tipo data o di tipo stringa che rappresenta una data a cui viene aggiunto l'intervallo.
  • 107. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005107 Funzioni Speciali Gestione delle Date  DateAdd  La funzione DateAdd consente di aggiungere o sottrarre da una data un intervallo di tempo specificato. È, ad esempio, possibile utilizzare DateAdd per determinare la data risultante dall'aggiunta di 30 giorni alla data odierna oppure l'orario risultante dall'aggiunta di 45 minuti all'ora corrente.  Per aggiungere giorni a date, è possibile utilizzare l'impostazione per il giorno dell'anno ("y"), per il giorno ("d") o per il giorno della settimana ("w").  La funzione DateAdd non restituisce una data non valida. In questo esempio, alla data 31 gennaio viene aggiunto un mese: DateAdd("m", 1, "31-gen-95")  In questo caso, DateAdd restituirà 28-feb-95 e non 31-feb-95. Se date è 31- gen-96, la funzione restituirà 29-feb-96, in quanto il 1996 è un anno bisestile.
  • 108. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005108 Funzioni Speciali Gestione delle Date  DateDiff().  Restituisce un valore Variant(Long) corrispondente al numero di intervalli di tempo tra due date specificate. La sintassi della funzione DateDiff è la seguente DateDiff(intervallo, data1, data2) dove  intervallo è un’espressione di tipo stringa corrispondente all'intervallo di tempo utilizzato per calcolare la differenza tra data1 e data2.  È possibile utilizzare la funzione DateDiff per determinare quanti intervalli di tempo specificati esistono tra due date.  Ad esempio possiamo utilizzare DateDiff per calcolare il numero di giorni che intercorrono tra due date oppure il numero di settimane tra la data odierna e la fine dell'anno.
  • 109. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005109 Funzioni Speciali Gestione delle Date  DateDiff  Per ottenere il numero di giorni tra data1 e data2 è possibile utilizzare sia l'impostazione del giorno dell'anno ("y") che quella del giorno ("d").  Quando per intervallo viene impostato il giorno della settimana ("w"), DateDiff restituisce il numero di settimane che intercorrono tra le due date.  Se data1 cade di lunedì, DateDiff conterà il numero di lunedì fino a data2, includendo nel conteggio data2 ma non data1.  Se per intervallo viene invece impostata la settimana ("ww"), la funzione DateDiff restituirà il numero di settimane del calendario comprese tra le due date.  La funzione conterà il numero di domeniche che intercorrono tra data1 e data2, includendo nel conteggio data2 se cade di domenica, ma non data1, anche se cade di domenica.
  • 110. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005110 Funzioni Speciali Gestione delle Date  DateDiff  Se data1 è successiva a data2, la funzione DateDiff restituirà un numero negativo.  Se data1 o data2 è un valore letterale di data, l'anno, se specificato, diventa parte permanente della data. Se tuttavia data1 o data2 è racchiuso tra virgolette doppie ("") e si omette l'anno, ogni volta che l'espressione data1 o data2 viene valutata verrà inserito nel codice l'anno corrente. Ciò rende possibile la scrittura di codice utilizzabile per anni diversi.  Va segnalato che quando si esegue il confronto tra il 31 dicembre e l'1 gennaio dell'anno immediatamente successivo, DateDiff utilizzata con l'impostazione dell'anno ("yyyy") restituisce 1 anche se è trascorso un solo giorno.
  • 111. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005111 Funzioni Speciali Gestione delle Date  Modalità con cui Excel interpreta le date ambigue  Quando interpreta date ambigue, Excel procede per supposizioni.  Ad esempio, quando si inserisce una data che include solo il mese e una o due cifre, Excel assume che da 1 a 31 sia il giorno e che l'anno sia l'anno corrente.  Excel assume che 01 dicembre sia 1 dicembre dell'anno corrente, non dicembre dell'anno 2001 oppure che dicembre 32 sia 1 dicembre 1932.
  • 112. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005112 Funzioni Speciali Gestione delle Date  Modalità secondo cui Excel interpreta gli anni a due cifre  Per impostazione predefinita, quando si inserisce un valore di anno a due cifre, Excel lo interpreta nel seguente modo:  da 00 a 29 Excel interpreta i valori di anno a due cifre da 00 a 29 come gli anni che vanno dal 2000 al 2029. Ad esempio, se si digita la data 28/5/19, Excel assume che la data sia 28 maggio, 2019.  da 30 a 99 Excel interpreta i valori anno a due cifre da 30 a 99 come gli anni che vanno dal 1930 al 1999. Ad esempio, se si digita la data 28/5/98, Excel assume che la data sia 28 maggio, 1998.  In ogni caso è fortemente consigliabile introdurre sempre date con quattro cifre per l’indicazione dell’anno anche se occorre essere consapevoli che questo naturalmente renderà obsoleti i nostri programmi fra circa 8000 anni.
  • 113. Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005113 Bibliografia  S. Benninga “Modelli Finanziari – La finanza con Excel” McGraw-Hill (2001)  U. Cherubini, G. Della Lunga “Matematica Finanziaria – Applicazioni con VBA per Excel” McGraw-Hill (2001)  U. Cherubini, G. Della Lunga “Il Rischio Finanziario” McGraw-Hill (2000)  E. Gaarder Haug “The Complete Guide to Option Pricing Formulas” McGraw-Hill (1998)  M. Jackson, M. Staunton “Advanced Modelling in Finance using Excel and VBA” Wiley Finance (2001)