SlideShare a Scribd company logo
1 of 146
Finanza Computazionale

Elementi di Programmazione in VBA

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Elementi di Programmazione

Le Macro di Excel
Ambiente di Sviluppo del VBA
La Sintassi del VBA
Matlab in sintesi (estrema!)
Matlab Excel Linker

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Le Macro di Excel


Cartelle
 Fogli
 Grafici
 Altri
oggetti

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Le Macro di Excel
Operazioni Elementari
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

Assegnare un nome ad un intervallo di
celle

Tenendo premuto il pulsante del mouse
trascinare da un angolo all‟angolo opposto
dell‟intervallo di celle desiderato
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

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Le Macro di Excel

Registrare una Macro

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Visualizzare il codice della macro
 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).

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Elementi di Programmazione

Le Macro di Excel

Ambiente di Sviluppo del VBA
La Sintassi del VBA
Matlab in sintesi (estrema!)
Matlab Excel Linker

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
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
Indica ma è importante non confonderlo con
numero, la cartella
il nome che appare sul cavalierino nella
finestra di Excel e che nella finestra Progetto
FINESTRA IMMEDIATA. In questa finestra è
appare fra parentesi; per ogni foglio di lavoro
FINESTRA
CONTROLLO.
Consente
il
possibile inserire comandi diretti per la
presente
nella
cartella
sono
presenti
monitoraggio del contenuto di una variabile o
visualizzazione del valore assunto dalle
altrettante voci.
dei valori generati da un’espressione (usata in
variabili (usata in fase di debug)
fase di debug).
GESTIONE PROGETTI. Questa sottofinestra
FINESTRA PROPRIETA’. In questa finestra
contiene un diagramma ad albero delle cartelle
compare un elenco di tutte le proprietà
di lavoro aperte e degli oggetti Excel in esse
dell’oggetto attualmente selezionato.
contenuti (oggetti, moduli, riferimenti, form e
FINESTRA DEL CODICE. La finestra del codice così via). Si userà la finestra gestione progetti
è
quella in cui si può esaminare, modificare per navigare fra i vari moduli ed altri oggetti di
o
creare ex-novo il codice sorgente VBA. Questa progetto VBA
un
finestra viene usata per scrivere nuove macro
o per editare macro esistenti.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
 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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Elementi di Programmazione

Le Macro di Excel

Ambiente di Sviluppo del VBA
La Sintassi del VBA
Matlab in sintesi (estrema!)
Matlab Excel Linker

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La Sintassi del VBA

Variabili & Operatori

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le variabili

 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.
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le variabili


Tutte le variabili che non vengono dichiarate
all‟interno di procedure e funzioni sono variabili
globali e possono essere utilizzate in qualsiasi
momento all‟interno del programma anche nelle
funzioni stesse.



Le variabili globali sono in pratica “visibili” ovunque
nel programma mentre il campo di visibilità delle
variabili locali è ristretto al sottoprogramma nel
quale sono state dichiarate.
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
I tipi di dati
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

Byte
Boolean
Integer
Long
Single

1
2
2
4
4

Double

Currency
Decimal

Intervallo

byte
byte
byte
byte
byte

Da 0 a 255
True o False
Da -32.768 a 32.767
Da -2.147.483.648 a 2.147.483.6477
Da -3,402823E38 a -1,401298E-45 per valori negativi; da
1,401298E-45 a 3,402823E38 per valori positivi
8 byte
Da -1,79769313486232E308 a -4,94065645841247E-324 per
valori negativi; da 4,94065645841247E-324 a
1,79769313486232E308 per valori positivi.
8 byte
Da -922.337.203.685.477,5808 a 922.337.203.685.477,5807
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
8 byte
Dall'1 gennaio 100 al 31 dicembre 9999
4 byte
Qualsiasi riferimento Object
10 byte + lunghezza stringa
Da 0 a circa 2 miliardi

Date
Object
String
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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Numeri




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

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

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 1999 può essere rappresentato
come illustrato
Dim UltimoDellAnno as Date
UltimoDellAnno = #31/12/1999#

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Stringhe di testo




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”

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

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
mod : resto di una divisione

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

L’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

:

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE

a = a + 1
La sintassi del VBA

Operatori di confronto

Operatore
Minore
Minore o uguale
Uguale
Diverso
Maggiore
Maggiore o uguale
Identico tipo
Analisi per criteri

Simbolo
<
<=
=
<>
>
>=
Is
Like

Esempio
A<B
A <= B
A=B
A <> B
A>B
A >= B
A Is B
A Like B

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE

Applicabile a
qualunque
qualunque
qualunque
qualunque
qualunque
qualunque
Object
String
La Sintassi del VBA

Istruzioni di Controllo del Flusso

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Condizioni e Cicli


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

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Condizioni e Cicli


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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Condizioni e Cicli


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
falliscono>]
End Select

se

tutti

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE

i

confronti
La sintassi del VBA

Condizioni e Cicli


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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Condizioni e Cicli


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

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Condizioni e Cicli


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.
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Condizioni e Cicli


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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Condizioni e Cicli


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
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Condizioni e Cicli


Si osservi la condizione. Essa risulta dalla combinazione di due
confronti. Si tratta di
Numero = 5 e Numero = 10



L'uso dell'operatore OR permette di verificare se almeno uno di essi ha
esito positivo. In tal caso, non deve essere fornita alcuna indicazione.
La stringa deve essere creata, infatti, solo quando entrambi i confronti
hanno esito negativo, ovvero quando l'espressione
(Numero = 5) Or (Numero = 10)



restituisce il valore False, ovvero quando è verificata la condizione:
Not ((Numero = 5) Or (Numero = 10))

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Condizioni e Cicli


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.








CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Condizioni e Cicli


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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Condizioni e Cicli


Il ciclo While



Una soluzione più elegante prevede l'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.
Gli effetti di un'iterazione senza fine sono evidenti. Il programma di fatto si blocca e per
terminarlo occorre far ricorso al task manager del sistema operativo.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Condizioni e Cicli


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.
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Condizioni e Cicli


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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La Sintassi del VBA

Strutture Dati & Tipi Definiti dall’Utente

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le 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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le 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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le 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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le 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

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le 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 1.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le 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
b

=
=

myVector(5)
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.



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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le 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



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).

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le strutture dati








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.
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le 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

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le 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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le 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

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le 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(20) As Single

Nel caso di un array multidimensionale, tuttavia,
quando si usa la parola chiave Preserve si può
modificare soltanto l‟ultima dimensione.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le 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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le 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
TitoloFinanziario che contiene al suo interno gli attributi
che caratterizzano questo tipo di oggetto.
L‟istruzione Type serve a questo scopo
Type TitoloFinanziario
Descrizione as String
Prezzo as Double
Volatilità as Double
End Type

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le strutture dati


Possiamo così dichiarare una nuova variabile, ad
esempio un‟azione come un generico titolo
Dim Azione As TitoloFinanziario



E‟ possibile accedere ai singoli attributi del titolo
(campi) con la seguente sintassi
PrezzoDelTitolo = Azione.Prezzo

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Le strutture dati


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 Azione
PrezzoAzione = .Prezzo
DescAzione = .Descrizione
VolAzione = .Volatilità
End With

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La Sintassi del VBA

Oggetti di Excel

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Iniziamo a lavorare con gli oggetti
 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,
come abbiamo già accennato, 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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Iniziamo a lavorare con gli oggetti


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).

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Iniziamo a lavorare con gli oggetti


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 stati precedentemente descritti.



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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Iniziamo a lavorare con gli oggetti


La sintassi per specificare una proprietà o un metodo è la stessa

Oggetto.Identificatore
dove Oggetto è un qualsiasi riferimento valido ad un oggetto. Per creare i
riferimenti agli oggetti potete impostare una variabile che faccia riferimento
all’oggetto come nell’esempio seguente in cui definiamo una variabile di tipo
Range
Dim UnRange As Range


Identificatore è un qualsiasi nome valido di una proprietà o di un
metodo.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Iniziamo a lavorare con gli oggetti





Nella sintassi notate che un punto (.) separa il riferimento all’oggetto dal
nome della proprietà o del metodo.
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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA - Iniziamo a lavorare con gli oggetti

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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA - Iniziamo a lavorare con gli oggetti

Pulsanti di Comando

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA - Iniziamo a lavorare con gli oggetti

Pulsanti di Comando

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA - Iniziamo a lavorare con gli oggetti

La Scatola degli Attrezzi

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA - Iniziamo a lavorare con gli oggetti

Celle e 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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La Sintassi del VBA

Subroutine & Funzioni

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Procedure


Con Visual Basic è possibile creare due tipi di procedure:









procedure Sub
procedure Function.

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.
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.
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.
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Procedure: Un esempio

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

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Subroutine


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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La sintassi del VBA

Funzioni


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.
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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
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.
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Esempio
Programmazione
VBA

Tassi d’Interesse, tassi di Sconto e
Leggi di Capitalizzazione

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Tassi d’interesse, di sconto e leggi di Capitalizzazione

Costruiamo le funzioni VBA
'---------------------------------------------------------' Autore
:
' Funzione : Calcolo del tasso di sconto
' Versione : 1.0
' Data
: 23 ottobre 2001
' Modifiche : prima versione
' Note
: Questa funzione calcola il tasso di sconto
'
assumendo un capitale nominale pari a
'
1000 Euro
'---------------------------------------------------------Public Function TassoSconto(Valore As Single) As Single
Dim Nominale As Single
Nominale = 1000
TassoSconto = (Nominale - Valore) / Nominale
End Function

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Tassi d’interesse, di sconto e leggi di Capitalizzazione

Costruiamo le funzioni VBA
'---------------------------------------------------------' Autore
:
' Funzione : Calcolo del tasso di interesse
' Versione : 1.0
' Data
: 23 ottobre 2001
' Modifiche : prima versione
' Note
:
'---------------------------------------------------------Public Function TassoInteresse(Valore As Single) As Single
Dim d As Single
' Viene richiamata la funzione TassoSconto

d = TassoSconto(Valore)
TassoInteresse = d / (1 - d)
End Function

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Tassi d’interesse, di sconto e leggi di Capitalizzazione

Costruiamo le funzioni VBA


Provate adesso ad inserire in una delle due funzioni una modifica apparentemente innocua.
Supponiamo di voler far scrivere alla funzione TassoSconto il nominale nella cella A1 del
foglio Excel, a tale scopo modifichiamo la procedura TassoSconto inserendo subito dopo
la riga
Nominale = 1000

il comando
Cells(1, 1).Value = Nominale


Effettuata questa modifica tornate nel foglio Excel e premete il tasto F9 per riaggiornare i
calcoli delle formule presenti nel foglio stesso. Nelle due celle contenenti le formule di
calcolo vedrete apparire la scritta #VALORE! questo accade perché la funzione ora sta
tentando di modificare direttamente il valore di una cella del foglio di lavoro.




Notate che né il VBA né Excel visualizzano un messaggio di errore se tentate di usare come
funzione definita dall‟utente una procedura che non soddisfa i requisiti richiesti per questo tipo di
funzione.
La funzione non sarà però in grado di restituire alcun risultato e questo produrrà il messaggio sopra
riportato, tipico di Excel, che indica semplicemente che la formula per quella cella non è in grado di
restituire alcun risultato valido.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Tassi d’interesse, di sconto e leggi di Capitalizzazione

Costruiamo le funzioni VBA


E’ facile scrivere una semplice funzione che calcola il tasso di interesse
nominale su base annua in funzione del numero di pagamenti.
Indichiamo con
V0 il valore del capitale iniziale;
V1 il valore del capitale al termine dell’anno;
m il numero di pagamenti effettuati nell’arco temporale considerato (un
anno);





Public Function InteresseBase_1(V1 As Single, _
V0 As Single, _
Optional m As Variant) As Single

If IsMissing(m) Then
MsgBox "Il calcolo viene effettuato ipotizzando un solo pagamento", _

vbInformation + vbOKOnly, "Attenzione!"
m = 1
End If
InteresseBase_1 = m * ((V1 / V0) ^ (1 / m) - 1)
End Function

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Tassi d’interesse, di sconto e leggi di Capitalizzazione

Costruiamo le funzioni VBA


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.


Nel nostro caso la funzione appena implementata può essere utilizzata sia
indicando il numero di pagamenti effettuati nel corso dell’anno (variabile m)
sia indicando semplicemente il valore iniziale e finale del capitale.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Tassi d’interesse, di sconto e leggi di Capitalizzazione

Costruiamo le funzioni VBA




La comparsa della finestra di dialogo che richiama la nostra
attenzione sul fatto che il calcolo è stato eseguito col valore
predefinito di m è resa possibile dalla funzione nativa IsMissing.
 La funzione IsMissing viene utilizzata per determinare se un
argomento Variant facoltativo è stato specificato nella
chiamata di una routine.
IsMissing restituisce il valore logico True se nessun valore è
stato passato per l'argomento specificato, in caso contrario
restituisce False.
 Nel nostro caso se l’utente non attribuisce esplicitamente un
valore al parametro m la funzione la funzione IsMissing viene
utilizzata per definire questo parametro pari a 1 e, nel contempo,
avvisare l’utente della scelta implicitamente compiuta.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Tassi d’interesse, di sconto e leggi di Capitalizzazione

Costruiamo le funzioni VBA


Notate che il parametro m è stato esplicitamente dichiarato come
Variant.




Questo perché la funzione IsMissing non può essere utilizzata per tipi di
dati semplici quali Integer o Double poiché, a differenza dei tipi di dati
Variant, per tali tipi di dati non è disponibile un bit per il flag "mancante".

Tuttavia definire tipi di dati Variant può risultare oneroso, per questo
nella sintassi degli argomenti facoltativi è possibile specificare un valore
predefinito.
Public Function InteresseBase_2(V1 As Single, _
V0 As Single, _
Optional m As Integer = 1) As Single
If m = 1 Then
MsgBox "Il calcolo viene effettuato ipotizzando un solo pagamento", _

vbInformation + vbOKOnly, "Attenzione!"
End If
InteresseBase_2 = m * ((V1 / V0) ^ (1 / m) - 1)
End Function

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Tassi d’interesse, di sconto e leggi di Capitalizzazione

Costruiamo le funzioni VBA


Completiamo questo esempio con un’ulteriore versione della nostra
funzione introducendo la possibilità di terminare l’esecuzione della
procedura prima di giungere al termine della funzione stessa. Nel codice
riportato nel seguente riquadroValore Descrizione
viene dichiarata una variabile di tipo
Costante
intero alla quale attribuiamo il valoreOK ritorno della funzione Message
di
vbOK
1
Box
vbCancel
2
Annulla
Public Function InteresseBase_3(V1 As Single, _

vbAbort

3

Termina

vbRetry

4

Riprova

vbIgnore

5

Ignora

Dim r As Integer

vbYes

6

Sì

If m = 1 Then

vbNo

7

No

V0 As Single, _

Optional m As Integer = 1) As Single

r = MsgBox("Il calcolo viene effettuato ipotizzando un solo pagamento" & _
vbCr & "Desideri procedere?", vbQuestion + vbYesNo, "Attenzione!")
If r = vbNo Then Exit Function
End If
InteresseBase_3 = m * ((V1 / V0) ^ (1 / m) - 1)
End Function

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Esempio
Programmazione
VBA

Tassi d’Interesse, tassi di Sconto e Leggi di Capitalizzazione

Tassi effettivi annuali e attualizzazione dei flussi

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La Sintassi del VBA

User Form

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
User Form

Premere con il tasto destro
sul nodo del VBA Project al
quale vogliamo aggiungere il
form

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
User Form
Alcuni fra gli eventi più comuni dell’oggetto UserForm

Evento

Activate

Click
Initialize

Terminate

Quando Avviene

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.
E’ l’evento che si genera ogni volta che l’utente preme con il
mouse sulla superficie della finestra.
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.
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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Esempio
Programmazione
VBA

Il Tasso Interno di Rendimento

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
User Form

Il form per il calcolo del tasso interno di rendimento

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
User Form


La prima procedura che andremo a scrivere si riferisce all‟evento Initialize che si verifica
ogniqualvolta la finestra di dialogo viene caricata in memoria.



Utilizzeremo questo evento per inizializzare il controllo di tipo combo box presente nella finestra stessa.
Questo comando viene utilizzato per dare all‟utente la possibilità di ottenere, a parità di input, tre risultati
distinti o meglio, tre forme diverse dello stesso risultato:
1.
2.
3.

il valore della funzione di sconto;
il tasso di interesse (capitalizzazione composta discreta);
Private Sub UserForm_Initialize()
il tasso di rendimento a scadenza (capitalizzazione composta continua).

cmbRisultato.AddItem "Funzione di Sconto"


In cmbRisultato.AddItem "Tasso varie opzioni della casella combinata viene effettuato in fase di
questo caso l‟inserimento delle Interesse"
esecuzione utilizzando il metodo AddItem dell‟oggetto ComboBox. La sintassi del metodo AddItem è la
cmbRisultato.AddItem "Tasso Rendimento a Scadenza"
seguente
End Sub

oggetto.AddItem [ elemento [, indicevar]]

dove oggetto indica un qualunque oggetto valido (come un combo box o una list box), elemento
specifica l'elemento o la riga da aggiungere. Il numero corrispondente al primo elemento o riga è 0, il
numero del secondo elemento o riga è 1 e così via. Infine indicevar è un numero intero che specifica la
posizione di inserimento di un nuovo elemento o di una nuova riga nell'oggetto, quest‟ultimo parametro è
facoltativo.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Il Calcolo del Tasso Interno di Rendimento


L‟algoritmo di Newton-Raphson



Data una funzione f(x) il problema consiste nel determinare il
valore di x* tale che f(x*) = 0.



L‟idea geometrica che sta alla base del metodo è la seguente.
 Partendo da una stima iniziale x0 della soluzione si genera una
successione di valori {xk} approssimando, per ogni k, la curva
y = f(x) con la tangente nel punto (xk, f(xk)) e calcolando xk+1
come l‟intersezione della tangente con l‟asse delle x.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Il Calcolo del Tasso Interno di Rendimento

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Il Calcolo del Tasso Interno di Rendimento




L‟algoritmo di Newton-Raphson
All‟equazione f(x) = 0 si sostituisce così l‟equazione della retta
tangente

f ( xk ) ( x

xk

1

xk ) f ' ( xk )

xk

f ( xk )
f ' ( xk )

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE

0
Il Calcolo del Tasso
Interno di Rendimento

START
Input X0,
EPS,
MAX_ITER

Calcola f(X0)

Calcola f’(X0)

Poni X0 = X

Calcola
X = X0 – f(X0)/f’(X0)

Incrementa di un’unità
il Numero Iterazioni

Diagrammi di Flusso

L’algoritmo di
Newton-Raphson

E’ vera almeno una delle
seguenti affermazioni:
1) |X – X0| < EPS
2) Numero Iterazioni >
MAX_ITER

?

SI
END

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE

NO
Il calcolo del tasso interno di rendimento


Valore attuale dei flussi
N

ck v k

VA

100v N

k 1

vk

c

100v N

k 1

Se le cedole
sono costanti



1 vN
cv
1 v

N

dal calcolo della
sommatoria (serie
geometrica)

La funzione di cui occorre ricercare lo zero è quindi

f (v) VAN ,c (v) P

1 vN
cv
1 v

100v N

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE

P

100v N
Il calcolo del tasso interno di rendimento
f (v )



1 vN
cv
1 v

P

Con un po‟ di pazienza si può calcolare anche la derivata di
questa funzione rispetto a v
df (v)
dv



100v N

1 vN
c
1 v

Nv N 1 (1 v) (1 v N )
cv
100 Nv N
2
1 v

Nel codice, le due formule sono calcolate rispettivamente
dalla funzione ValoreAttuale e DValoreAttuale.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE

1
c = Val(txtCedola)
m = Val(txtNumCedole)
Prezzo = Val(txtPrezzo)
eps = Val(txtTolleranza)

'
'
'
'

valore della cedola
numero di cedole in corso
prezzo di mercato
precisione di calcolo

ItemSelezionato = cmbRisultato.ListIndex
'
' Viene utilizzato l'algoritmo di Newton-Raphson per il
' calcolo della funzione di sconto
'
v = 0.5 ' valore iniziale della funzione di sconto
'
Do
v_old = v
Delta = (ValoreAttuale(v_old, m, c) - Prezzo) _
/ DValoreAttuale(v_old, m, c)
v = v_old - Delta
Loop Until Abs(v_old - v) < eps
'
Select Case ItemSelezionato
Case 0:
txtRisultato = v
Case 1:
txtRisultato = Val(100 * (1 / v - 1))
Case 2:
txtRisultato = Val(-100 * Log(v))
End Select

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE

Vengono letti i valori scritti
nelle caselle di testo

Viene letto il calcolo desiderato
attraverso la proprietà ListIndex
dell’oggetto Combo Box
La Sintassi del VBA

Gestione delle Date

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Funzioni per la 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
Function IsBisestile(Data As Date) As Boolean
meno bisestile.
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

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Funzioni per la 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

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Funzioni per la 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.
L‟esempio che proponiamo implementa una procedura per
calcolare la data che si ottiene sottraendo un numero di
mesi prefissato ad una data di partenza che viene passata
come parametro di input.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Funzioni per la 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
Lunedì
Martedì
Mercoledì
Giovedì
Venerdì
Sabato

vbSunday
vbMonday
vbTuesday
vbWednesday
vbThursday
vbFriday
vbSaturday

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Funzioni per la 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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Funzioni per la gestione delle date


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-gen96, la funzione restituirà 29-feb-96, in quanto il 1996 è un anno bisestile.
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Funzioni per la 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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Funzioni per la gestione delle date







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.
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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Funzioni per la 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.

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.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Elementi di Programmazione
Le Macro di Excel
Ambiente di Sviluppo del VBA
La Sintassi del VBA
Matlab in sintesi (estrema!)

Matlab Excel Linker

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Matlab in Sintesi (Estrema!!!)






In questa sezione cercheremo di fornire una breve
introduzione all‟uso di Matlab, fornendo il materiale
sufficiente per implementare i metodi numerici che
consideremo in seguito.
L‟ambiente Matlab è di uso estremamente semplice
ed è possibile avere una panoramica introduttiva
utilizzando i comandi intro e demo.
Per ulteriori informazioni si rimanda alla guida
all‟uso di Matlab e al sito Web www.mathworks.com.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Descrizione generale di Matlab


MATLAB ( = MATrix LABoratory):








un linguaggio di programmazione per applicazioni
scientifiche e numeriche
vasto set di funzioni predefinite
interprete di comandi
possibilita' di scrivere nuove funzioni
libreria di TOOLBOX per svariate applicazioni; ad
es. Financial Toolbox, Analisi Serie Storiche,
Risoluzione Eq. Differenziali, etc...

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
L’interfaccia di Matlab


Interfaccia utente: la Command Window da‟
accesso diretto all‟interprete (scrittura diretta
di comandi.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Matlab come calcolatrice...




La modalita‟ di impiego piu‟ “semplice”: per valutare
espressioni numeriche.
Esempio: per calcolare

4

2 sin 0.2

2

e‟ sufficiente digitare al prompt »
»4 + sqrt(2) - sin(0.2*pi)^2 + exp(2)
ans =
12.4578


Il risultato viene scritto nella variabile ans.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE

e

2
Definizione di variabili


È possibile definire variabili e espressioni
non numeriche più complesse.


Esempio:
» a=4; b=2;
» a*b
ans =
8



Per cancellare una variabile (es. a):
» clear a

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Il Workspace




Ogni variabile definita in questo modo viene
conservata in memoria, nel Workspace.
Il comando whos mostra una lista delle variabili
definite:
» whos
Name
a
ans
b
Grand total

Size
Bytes
1x1
8
1x1
8
1x1
8
is 3 elements using

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE

Class
double array
double array
double array
24 bytes
Lettura e scrittura su file
Mediante i comandi load e save e‟ possibile
salvare su file le variabili del workspace.







load nomefile variabile1 variabile2 ...
carica dal file nomefile.mat le variabili elencate.
save nomefile variabile1 variabile2 ...
scrive nel file nomefile.mat le variabili elencate.
load nomefile carica tutte le variabili in nomefile.
Save nomefile salva tutto il workspace in nomefile.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Quindi...


Esiste un insieme (molto vasto) di funzioni
predefinite (come sin e sqrt nell‟esempio
precedente).



A differenza dei normali linguaggi (C,
Pascal…) non occorre dichiarare le variabili.
L‟assegnazione
coincide
con
la
dichiarazione.
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Una funzione fondamentale!


help




help nome_toolbox




guida „on-line‟ di MATLAB sullo specifico comando

ver




per vedere la lista dei comandi installati in un toolbox

help nome_comando




per vedere la lista dei toolboxes installati

info sulla versione di MATLAB

helpwin


finestra di help di MATLAB

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Definizione di matrici


Come si definisce una matrice in Matlab?
Esempio: definire la matrice 2x2
» A = [ 1, 2; 3, 4 ]
A=
1 2
3 4



A

1 2
3 4

Come si accede agli elementi di una matrice:
» A( 1, 2 )
ans =
2

Indici (riga e colonna)
dell’elemento di interesse

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
La wildcard :


Per accedere a intere righe o colonne di una
matrice, si usa la wildcard :


Es.: selezionare la prima riga di A
» A(1,:)
ans =
1 2



Es.: selezionare la seconda colonna di A
» A(:,2)
ans =
2
4

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Selezionare sottomatrici


Se definiamo
» B=[ 1, 2, 3; 4, 5, 6 ]
B =
1
2
3
Sottomatrice
4
5
6



di interesse

Abbiamo che
» B( 1:2 , 2:3 )
ans =
2
3
5
6

Indici della sottomatrice di interesse

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Operazioni (elementari) sulle matrici


Sono definiti gli operatori +,-,* e ^

» A = [ 1 2; 3 4 ]; B = [ 5 6; 7 8 ]
» A+B
» A*B
ans =
ans =
6
8
19
22
10
12
43
50
» B-A
ans =
4
4

4
4

» A^2
ans =
7
15

10
22

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Operazioni (elementari) sulle matrici


Sono definiti gli operatori .*, ./ e .^, che si
applicano elemento per elemento:

» A = [ 1 2; 3 4 ]; B = [ 5 6; 7 8 ];
» A.*B
ans =
5
12
21
32
» A.^B
ans =
1
64
2187
65536

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Operazioni (elementari) sulle matrici


Determinante:



» det(A)
ans =
-2


Autovalori:
» eig(A)
ans =
-0.3723
5.3723

Matrice inversa:
» inv(A)
ans =
-2.0000
1.5000



1.0000
-0.5000

Matrice trasposta:
» A'
ans =
1
2

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE

3
4
Altre operazioni




Osservazione importante: NON occorre
definire le dimensioni in modo esplicito!
Per conoscere le dimensioni di una matrice:
size.
Altre operazioni:




rank -> calcolo del rango di una matrice
trace -> calcolo della traccia di una matrice
norm -> calcolo della norma di una matrice

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Alcune matrici “speciali”
matrice identita‟ nxn;



eye(n,n)



zeros(n,m)

matrice di zeri nxm;



ones(n,m)

matrice di uni nxm;



rand(n,m)
matrice nxm con elementi distribuiti
uniformemente tra 0 e 1.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Vettori


I vettori hanno due funzioni fondamentali in
Matlab:




rappresentazione dei polinomi (un polinomio e‟
descritto dal vettore dei suoi coefficienti);

rappresentazione di segnali (un segnale e‟
rappresentato mediante la sequenza dei valori
che assume in un insieme di istanti di tempo,
quindi mediante un vettore).

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Definizione di vettori (1)


» v=(0:10)
v =
0
8



9

1

2

3

4

5

6

10

» v=(1:0.5:3)
v =
1.0000

Valore finale
1.5000

2.0000

2.5000

Passo
Valore iniziale

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE

3.0000

7
Definizione di vettori


Come matrici riga o colonna:

» v = [ 3 6 1 7 ]
v =
3
6
1


7

Polinomi: sono rappresentati come vettori.
2
Es.: 3s 2 s 1

» pol = [ 3 2 1 ]
pol =
3
2
1

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Operazioni sui polinomi


Calcolo delle radici

roots

» roots( pol )
ans =
-0.3333 + 0.4714i
-0.3333 - 0.4714i


Valutazione in un punto

polyval

» polyval( pol, 0 )
ans =
1

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
File .m e functions


Un file .m (M-file) è un programma riconoscibile da
Matlab. La scrittura di files .m permette di:



Sperimentare con un algoritmo, senza dover
reintrodurre una lunga lista di comandi



Ottenere una documentazione permanente per un
lavoro



Ottenere programmi che possono essere
riutilizzati, per esempio cambiando solo i dati



Scambiare programmi con altri utenti

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
File .m e functions


I file .m sono di due tipi:




Script M-files: sono files di comandi. Non hanno
variabili in entrata e in uscita e operano sulle
variabili del workspace
function M-files: sono files di comandi, che hanno
argomenti in entrata e in uscita. Le variabili
interne a questi programmi non influenzano le
variabili del workspace

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Esempio: file radice.m
% Questo file calcola la radice degli elementi di
% una matrice a, se a>0, altrimenti da' un messaggio di errore
if a>=0
a=sqrt(a)
else
display('errore')
end


Attenzione: nel workspace deve essere stata definita una
variabile a. Inoltre l‟esecuzione di questo script modifica il
contenuto della variabile a

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Esempio: Function M-files
function a=radfunz(x)
% RADFUNZ(X) calcola la radice degli elementi di X
%
se X>=0, altrimenti stampa un messaggio di errore
%
if x>=0
a=sqrt(x)
else
display('errore')
end

Questo file deve essere salvato come radfunz.m

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Struttura di una function


La function inizia con una riga che ne specifica il nome
(nell’esempio radfunz), le variabili di input e le variabili di
output.



La function deve essere salvata in un file con lo stesso
nome (nell’esempio radfunz.m)



I commenti dopo la prima riga faranno parte dello help
on-line



Seguono le istruzioni con eventuali altri commenti

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Elementi di Programmazione

Le Macro di Excel

Ambiente di Sviluppo del VBA
La Sintassi del VBA
Matlab in sintesi (estrema!)
Matlab Excel Linker

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Excel Linker


What Is Excel Link?


Excel Link is a software add-in that integrates Microsoft
Excel and MATLAB® in a Microsoft Windows-based
computing environment.



By connecting Excel and MATLAB, you can access the
numerical, computational, and graphical power of MATLAB
from Excel worksheet and macro programming tools.



Excel Link lets you exchange and synchronize data
between the two environments.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Excel Linker


Understanding the Environment







Excel Link communicates between the Excel
workspace and the MATLAB workspace.
It positions Excel as a front end to MATLAB.
You use Excel Link functions from an Excel
worksheet or macro, and you never have to leave
the Excel environment.
With a small number of functions to manage the
link and manipulate data, Excel Link is powerful in
its simplicity.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Excel Linker


Configuring Excel to Work with Excel Link



Once you have installed Excel Link, you are ready to configure Excel.
You need do these steps only once:










Start Microsoft Excel.
Pull down the Tools menu, select Add-Ins and click Browse.
Find
and
select
the
Excel
Link
add-in
excllink.xla
under
<matlab>/toolbox/exlink. Click OK. Note
Throughout this document the
notation <matlab> represents the MATLAB root directory, the directory where
MATLAB is installed on your system.
Back in the Add-Ins window, make sure there's a check in the box for Excel
Link for use with MATLAB and click OK. The Excel Link add-in loads now and
with each subsequent invocation of Excel.
Watch for the appearance of the MATLAB Command Window button on the
Windows taskbar. Note The MATLAB desktop does not start automatically
at this time. If you want to run the desktop, enter the desktop command in the
command window.
Watch for the appearance of the Excel Link toolbar on your Excel worksheet.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
evalstring
esegue il comando matlab
corrispondente alla stringa
passata come parametro

getmatrix
trasferisce da Matlab verso
Excel il contenuto di una matrice

putmatrix
permette di inviare a Matlab
il contenuto di una matrice

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Excel Linker


Starting Excel Link


Automatic Start










When installed and configured according to the preceding instructions,
Excel Link and MATLAB automatically start when you start Excel.
If you do not want Excel Link and MATLAB to start automatically when
you start Excel, enter =MLAutoStart("no") in a worksheet cell.
This function changes the initialization file so that Excel Link and
MATLAB no longer start automatically when you start Excel.
See MLAutoStart in Function Reference.

Manual Start







To start Excel Link and MATLAB manually from Excel, pull down the
Tools menu and select Macro.
In the Macro Name/Reference box enter matlabinit and click Run.
Watch for the MATLAB Command Window button to appear on the
taskbar.
See matlabinit in Function Reference.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Excel Linker
Link Management Functions



Excel Link provides four link management functions to initialize, start, and stop
Excel Link and MATLAB.



1.

matlabinit

Initialize Excel Link and start MATLAB process.

2.

MLAutoStart

Automatically start MATLAB process.

3.

MLClose

Terminate MATLAB process.

4.

MLOpen

Start MATLAB process.



You can invoke any link management function except matlabinit as a worksheet
cell formula or in a macro.



You invoke matlabinit from the Excel Tools Macro menu or in a macro
subroutine.



Use MLAutoStart to toggle automatic startup. If you install and configure Excel
Link according to the default instructions, Excel Link and MATLAB automatically
start every time you start Excel. If you choose manual startup, use matlabinit to
initialize Excel Link and start MATLAB.



Use MLClose to stop MATLAB without stopping Excel, and use MLOpen or
matlabinit to restart MATLAB in the same Excel session.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Excel Linker


Data Management Functions


Excel Link provides nine data management functions to copy data
between Excel and MATLAB and to execute MATLAB commands from
Excel.














matlabfcn
matlabsub

Evaluate MATLAB command given Excel data.
Evaluate MATLAB command given Excel data and
designate output location.
MLAppendMatrix Create or append MATLAB matrix with data from Excel
worksheet.
MLDeleteMatrix Delete MATLAB matrix.
MLEvalString
Evaluate command in MATLAB.
MLGetMatrix
Write contents of MATLAB matrix in Excel worksheet.
MLGetVar
Write contents of MATLAB matrix in Excel VBA (Visual
Basic for Applications) variable.
MLPutMatrix
Create or overwrite MATLAB matrix with data from Excel
worksheet.
MLPutVar
Create or overwrite MATLAB matrix with data from Excel
VBA variable.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Excel Linker


Data Management Functions










You can invoke any data management function except
MLGetVar and MLPutVar as a worksheet cell formula or
in a macro.
You can invoke MLGetVar and MLPutVar only in a macro.
Use MLAppendMatrix, MLPutMatrix, and MLPutVar to
copy data from Excel to MATLAB.
Use MLEvalString to execute MATLAB commands from
Excel.
Use MLDeleteMatrix to delete a MATLAB variable.
Use matlabfcn, matlabsub, MLGetMatrix and
MLGetVar to copy data from MATLAB to Excel.

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
Esempio
Programmazione
VBA + MATLAB con Excel Link

Semplici Calcoli Finanziari

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE

More Related Content

What's hot

Separation of losses in a dc shunt motor
Separation of losses in a dc shunt motorSeparation of losses in a dc shunt motor
Separation of losses in a dc shunt motorsuresh shindhe
 
Fuel cells - types, working, construction, fabrication and application
Fuel cells - types, working, construction, fabrication and applicationFuel cells - types, working, construction, fabrication and application
Fuel cells - types, working, construction, fabrication and applicationmegr1412
 
Solar energy in india
Solar energy in indiaSolar energy in india
Solar energy in indiadevesh soni
 
ppt on the Solar energy
ppt on the Solar energyppt on the Solar energy
ppt on the Solar energyYuvraj Singh
 
Presentation induction motors 2
Presentation induction motors 2Presentation induction motors 2
Presentation induction motors 2Edmund Lor
 
Electric drive
Electric driveElectric drive
Electric drivemishradiya
 
special electrical motor(switched reluctance motor)
special electrical motor(switched reluctance motor)special electrical motor(switched reluctance motor)
special electrical motor(switched reluctance motor)Srihari Datta
 
Kinetic Energy Recovery Systems
Kinetic Energy Recovery SystemsKinetic Energy Recovery Systems
Kinetic Energy Recovery SystemsJeffrey Funk
 
Solar Energy (how it works and fact)
Solar Energy (how it works and fact)Solar Energy (how it works and fact)
Solar Energy (how it works and fact)Celin Vergonio
 
Solar power by K. R. THANKI
Solar power by K. R. THANKISolar power by K. R. THANKI
Solar power by K. R. THANKIKrunal Thanki
 
E-mobility trends in India: Challenges and Opportunities
E-mobility trends in India: Challenges and OpportunitiesE-mobility trends in India: Challenges and Opportunities
E-mobility trends in India: Challenges and OpportunitiesIET India
 
Battery electric vehicle ppt
Battery electric vehicle pptBattery electric vehicle ppt
Battery electric vehicle pptnehachandel23
 
How Solar Panels Work
How Solar Panels WorkHow Solar Panels Work
How Solar Panels WorkJon Samsel
 
Electric Vehicle :Literature Review
Electric Vehicle :Literature ReviewElectric Vehicle :Literature Review
Electric Vehicle :Literature Reviewryans09sstc
 
Charging Electric Vehicles with Renewables: Emerging Strategies to Meet Custo...
Charging Electric Vehicles with Renewables: Emerging Strategies to Meet Custo...Charging Electric Vehicles with Renewables: Emerging Strategies to Meet Custo...
Charging Electric Vehicles with Renewables: Emerging Strategies to Meet Custo...World Resources Institute (WRI)
 
Photovoltaic solar farm: earthing system design for cost reduction and syste...
Photovoltaic solar farm: earthing system design for  cost reduction and syste...Photovoltaic solar farm: earthing system design for  cost reduction and syste...
Photovoltaic solar farm: earthing system design for cost reduction and syste...IJECEIAES
 

What's hot (20)

Separation of losses in a dc shunt motor
Separation of losses in a dc shunt motorSeparation of losses in a dc shunt motor
Separation of losses in a dc shunt motor
 
Fuel cells - types, working, construction, fabrication and application
Fuel cells - types, working, construction, fabrication and applicationFuel cells - types, working, construction, fabrication and application
Fuel cells - types, working, construction, fabrication and application
 
Solar energy in india
Solar energy in indiaSolar energy in india
Solar energy in india
 
EEP303: Exp4
EEP303: Exp4EEP303: Exp4
EEP303: Exp4
 
ppt on the Solar energy
ppt on the Solar energyppt on the Solar energy
ppt on the Solar energy
 
Presentation induction motors 2
Presentation induction motors 2Presentation induction motors 2
Presentation induction motors 2
 
Electric drive
Electric driveElectric drive
Electric drive
 
Designing Solar PV Systems (Rooftops)
Designing Solar PV Systems(Rooftops)Designing Solar PV Systems(Rooftops)
Designing Solar PV Systems (Rooftops)
 
special electrical motor(switched reluctance motor)
special electrical motor(switched reluctance motor)special electrical motor(switched reluctance motor)
special electrical motor(switched reluctance motor)
 
Kinetic Energy Recovery Systems
Kinetic Energy Recovery SystemsKinetic Energy Recovery Systems
Kinetic Energy Recovery Systems
 
Solar Energy (how it works and fact)
Solar Energy (how it works and fact)Solar Energy (how it works and fact)
Solar Energy (how it works and fact)
 
Solar power by K. R. THANKI
Solar power by K. R. THANKISolar power by K. R. THANKI
Solar power by K. R. THANKI
 
Solar Power
Solar PowerSolar Power
Solar Power
 
E-mobility trends in India: Challenges and Opportunities
E-mobility trends in India: Challenges and OpportunitiesE-mobility trends in India: Challenges and Opportunities
E-mobility trends in India: Challenges and Opportunities
 
Battery electric vehicle ppt
Battery electric vehicle pptBattery electric vehicle ppt
Battery electric vehicle ppt
 
How Solar Panels Work
How Solar Panels WorkHow Solar Panels Work
How Solar Panels Work
 
Electric Vehicle :Literature Review
Electric Vehicle :Literature ReviewElectric Vehicle :Literature Review
Electric Vehicle :Literature Review
 
Charging Electric Vehicles with Renewables: Emerging Strategies to Meet Custo...
Charging Electric Vehicles with Renewables: Emerging Strategies to Meet Custo...Charging Electric Vehicles with Renewables: Emerging Strategies to Meet Custo...
Charging Electric Vehicles with Renewables: Emerging Strategies to Meet Custo...
 
Solar and ev charging station
Solar and ev charging stationSolar and ev charging station
Solar and ev charging station
 
Photovoltaic solar farm: earthing system design for cost reduction and syste...
Photovoltaic solar farm: earthing system design for  cost reduction and syste...Photovoltaic solar farm: earthing system design for  cost reduction and syste...
Photovoltaic solar farm: earthing system design for cost reduction and syste...
 

Viewers also liked

Lezione 1 - Introduzione al VBA per Excel
Lezione 1 - Introduzione al VBA per ExcelLezione 1 - Introduzione al VBA per Excel
Lezione 1 - Introduzione al VBA per ExcelGiovanni Della Lunga
 
Strutture fondamentali della_programmaizone_visual_basicv2014_1.0
Strutture fondamentali della_programmaizone_visual_basicv2014_1.0Strutture fondamentali della_programmaizone_visual_basicv2014_1.0
Strutture fondamentali della_programmaizone_visual_basicv2014_1.0I.S.I.S. "Antonio Serra" - Napoli
 
Capitolo 1 richiami mat. finanziaria
Capitolo 1   richiami mat. finanziariaCapitolo 1   richiami mat. finanziaria
Capitolo 1 richiami mat. finanziariaGiovanni 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
 
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 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 6 introduzione alle opzioni finanziarie
Capitolo 6   introduzione alle opzioni finanziarieCapitolo 6   introduzione alle opzioni finanziarie
Capitolo 6 introduzione alle opzioni finanziarieGiovanni Della Lunga
 
Office & VBA - Giorni 4 e 5
Office & VBA - Giorni 4 e 5Office & VBA - Giorni 4 e 5
Office & VBA - Giorni 4 e 5Diego La Monica
 
Lezione 11 - Vba E Excel
Lezione 11 - Vba E ExcelLezione 11 - Vba E Excel
Lezione 11 - Vba E ExcelRice Cipriani
 
Esercizio di excel
Esercizio di excelEsercizio di excel
Esercizio di excelremo luzi
 

Viewers also liked (18)

Lezione 1 - Introduzione al VBA per Excel
Lezione 1 - Introduzione al VBA per ExcelLezione 1 - Introduzione al VBA per Excel
Lezione 1 - Introduzione al VBA per Excel
 
Simulation methods finance_2
Simulation methods finance_2Simulation methods finance_2
Simulation methods finance_2
 
Strutture fondamentali della_programmaizone_visual_basicv2014_1.0
Strutture fondamentali della_programmaizone_visual_basicv2014_1.0Strutture fondamentali della_programmaizone_visual_basicv2014_1.0
Strutture fondamentali della_programmaizone_visual_basicv2014_1.0
 
Office & VBA - Giorno 6
Office & VBA - Giorno 6Office & VBA - Giorno 6
Office & VBA - Giorno 6
 
Capitolo 1 richiami mat. finanziaria
Capitolo 1   richiami mat. finanziariaCapitolo 1   richiami mat. finanziaria
Capitolo 1 richiami mat. finanziaria
 
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
 
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
 
Lezione 3 metodo monte carlo
Lezione 3   metodo monte carloLezione 3   metodo monte carlo
Lezione 3 metodo monte carlo
 
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 6 introduzione alle opzioni finanziarie
Capitolo 6   introduzione alle opzioni finanziarieCapitolo 6   introduzione alle opzioni finanziarie
Capitolo 6 introduzione alle opzioni finanziarie
 
Capitolo 4 titoli obbligazionari
Capitolo 4   titoli obbligazionariCapitolo 4   titoli obbligazionari
Capitolo 4 titoli obbligazionari
 
Office & VBA - Giorno 2
Office & VBA - Giorno 2Office & VBA - Giorno 2
Office & VBA - Giorno 2
 
Office & VBA - Giorni 4 e 5
Office & VBA - Giorni 4 e 5Office & VBA - Giorni 4 e 5
Office & VBA - Giorni 4 e 5
 
Lezione 11 - Vba E Excel
Lezione 11 - Vba E ExcelLezione 11 - Vba E Excel
Lezione 11 - Vba E Excel
 
Esercizio di excel
Esercizio di excelEsercizio di excel
Esercizio di excel
 
Office & VBA - Giorno 1
Office & VBA - Giorno 1Office & VBA - Giorno 1
Office & VBA - Giorno 1
 
Simulation methods finance_1
Simulation methods finance_1Simulation methods finance_1
Simulation methods finance_1
 
CodyRoby at INTED2015
CodyRoby at INTED2015CodyRoby at INTED2015
CodyRoby at INTED2015
 

Similar to Capitolo 2 elementi di programmazione in vba

Linguaggio V.B.A.
Linguaggio V.B.A.Linguaggio V.B.A.
Linguaggio V.B.A.Agabiti25
 
What is new in C# 2018
What is new in C# 2018What is new in C# 2018
What is new in C# 2018Marco Parenzan
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Gian Maria Ricci
 
Tesina di fine seminario sas ed sql
Tesina di fine seminario sas ed sqlTesina di fine seminario sas ed sql
Tesina di fine seminario sas ed sqlMarco D'Alessandro
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 
Programmazione e gestione della sicurezza: Verbale elettronico
Programmazione e gestione della sicurezza: Verbale elettronicoProgrammazione e gestione della sicurezza: Verbale elettronico
Programmazione e gestione della sicurezza: Verbale elettronicoDavide Ciambelli
 
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...LucaGre
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide SitoDavide Sito
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsMarcello Teodori
 
AreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicitàAreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicitàGiulio Destri
 
Community Tour 2009 Windows Azure Overview
Community Tour 2009 Windows Azure OverviewCommunity Tour 2009 Windows Azure Overview
Community Tour 2009 Windows Azure OverviewFabio Cozzolino
 

Similar to Capitolo 2 elementi di programmazione in vba (20)

Excel development e sql 1.7
Excel development e sql   1.7Excel development e sql   1.7
Excel development e sql 1.7
 
Excel development e sql 1.3
Excel development e sql   1.3Excel development e sql   1.3
Excel development e sql 1.3
 
Linguaggio V.B.A.
Linguaggio V.B.A.Linguaggio V.B.A.
Linguaggio V.B.A.
 
Lezione 1
Lezione 1Lezione 1
Lezione 1
 
Office & VBA - Giorno 7
Office & VBA - Giorno 7Office & VBA - Giorno 7
Office & VBA - Giorno 7
 
What's new in C# 7
What's new in C# 7What's new in C# 7
What's new in C# 7
 
What is new in C# 2018
What is new in C# 2018What is new in C# 2018
What is new in C# 2018
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010
 
#dd12 grillo daniele_xpages_tips_tricks_rev2
#dd12 grillo daniele_xpages_tips_tricks_rev2#dd12 grillo daniele_xpages_tips_tricks_rev2
#dd12 grillo daniele_xpages_tips_tricks_rev2
 
Tesina di fine seminario sas ed sql
Tesina di fine seminario sas ed sqlTesina di fine seminario sas ed sql
Tesina di fine seminario sas ed sql
 
Laravel Framework PHP
Laravel Framework PHPLaravel Framework PHP
Laravel Framework PHP
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 
Programmazione e gestione della sicurezza: Verbale elettronico
Programmazione e gestione della sicurezza: Verbale elettronicoProgrammazione e gestione della sicurezza: Verbale elettronico
Programmazione e gestione della sicurezza: Verbale elettronico
 
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide Sito
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa Struts
 
AreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicitàAreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicità
 
Community Tour 2009 Windows Azure Overview
Community Tour 2009 Windows Azure OverviewCommunity Tour 2009 Windows Azure Overview
Community Tour 2009 Windows Azure Overview
 
Office & VBA - Giorno 8
Office & VBA - Giorno 8Office & VBA - Giorno 8
Office & VBA - Giorno 8
 
Progetti per l'esame negli ITIS
Progetti per l'esame negli ITISProgetti per l'esame negli ITIS
Progetti per l'esame negli ITIS
 

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
 
Excel development e sql 3.9
Excel development e sql   3.9Excel development e sql   3.9
Excel development e sql 3.9
 
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
 
Excel development e sql 2.1
Excel development e sql   2.1Excel development e sql   2.1
Excel development e sql 2.1
 
Cavalcando onde gravitazionali
Cavalcando onde gravitazionaliCavalcando onde gravitazionali
Cavalcando onde gravitazionali
 
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
 

Recently uploaded

IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaRafael Figueredo
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxOrianaOcchino
 
Esame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptxEsame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptxfedericodellacosta2
 
La produzione e la gestione degli Open Data
La produzione e la gestione degli Open DataLa produzione e la gestione degli Open Data
La produzione e la gestione degli Open DataGianluigi Cogo
 
biblioverifica ijf24 Festival Internazionale del Giornalismo 2024
biblioverifica ijf24 Festival Internazionale del Giornalismo 2024biblioverifica ijf24 Festival Internazionale del Giornalismo 2024
biblioverifica ijf24 Festival Internazionale del Giornalismo 2024Damiano Orru
 
Terza cultura w la scienza Italo Calvino.pdf
Terza cultura w la scienza Italo Calvino.pdfTerza cultura w la scienza Italo Calvino.pdf
Terza cultura w la scienza Italo Calvino.pdfPierLuigi Albini
 
Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaPierLuigi Albini
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieVincenzoPantalena1
 

Recently uploaded (8)

IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptx
 
Esame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptxEsame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptx
 
La produzione e la gestione degli Open Data
La produzione e la gestione degli Open DataLa produzione e la gestione degli Open Data
La produzione e la gestione degli Open Data
 
biblioverifica ijf24 Festival Internazionale del Giornalismo 2024
biblioverifica ijf24 Festival Internazionale del Giornalismo 2024biblioverifica ijf24 Festival Internazionale del Giornalismo 2024
biblioverifica ijf24 Festival Internazionale del Giornalismo 2024
 
Terza cultura w la scienza Italo Calvino.pdf
Terza cultura w la scienza Italo Calvino.pdfTerza cultura w la scienza Italo Calvino.pdf
Terza cultura w la scienza Italo Calvino.pdf
 
Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza cultura
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medie
 

Capitolo 2 elementi di programmazione in vba

  • 1. Finanza Computazionale Elementi di Programmazione in VBA CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 2. Elementi di Programmazione Le Macro di Excel Ambiente di Sviluppo del VBA La Sintassi del VBA Matlab in sintesi (estrema!) Matlab Excel Linker CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 3. Le Macro di Excel  Cartelle  Fogli  Grafici  Altri oggetti CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 4. Le Macro di Excel Operazioni Elementari 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 Assegnare un nome ad un intervallo di celle Tenendo premuto il pulsante del mouse trascinare da un angolo all‟angolo opposto dell‟intervallo di celle desiderato 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 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 5. 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 6. Le Macro di Excel Registrare una Macro CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 7. Visualizzare il codice della macro  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). CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 8. Elementi di Programmazione Le Macro di Excel Ambiente di Sviluppo del VBA La Sintassi del VBA Matlab in sintesi (estrema!) Matlab Excel Linker CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 9. 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 Indica ma è importante non confonderlo con numero, la cartella il nome che appare sul cavalierino nella finestra di Excel e che nella finestra Progetto FINESTRA IMMEDIATA. In questa finestra è appare fra parentesi; per ogni foglio di lavoro FINESTRA CONTROLLO. Consente il possibile inserire comandi diretti per la presente nella cartella sono presenti monitoraggio del contenuto di una variabile o visualizzazione del valore assunto dalle altrettante voci. dei valori generati da un’espressione (usata in variabili (usata in fase di debug) fase di debug). GESTIONE PROGETTI. Questa sottofinestra FINESTRA PROPRIETA’. In questa finestra contiene un diagramma ad albero delle cartelle compare un elenco di tutte le proprietà di lavoro aperte e degli oggetti Excel in esse dell’oggetto attualmente selezionato. contenuti (oggetti, moduli, riferimenti, form e FINESTRA DEL CODICE. La finestra del codice così via). Si userà la finestra gestione progetti è quella in cui si può esaminare, modificare per navigare fra i vari moduli ed altri oggetti di o creare ex-novo il codice sorgente VBA. Questa progetto VBA un finestra viene usata per scrivere nuove macro o per editare macro esistenti. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 10. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 11. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 12.  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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 13. Elementi di Programmazione Le Macro di Excel Ambiente di Sviluppo del VBA La Sintassi del VBA Matlab in sintesi (estrema!) Matlab Excel Linker CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 14. La Sintassi del VBA Variabili & Operatori CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 15. La sintassi del VBA Le variabili  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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 16. La sintassi del VBA Le variabili  Tutte le variabili che non vengono dichiarate all‟interno di procedure e funzioni sono variabili globali e possono essere utilizzate in qualsiasi momento all‟interno del programma anche nelle funzioni stesse.  Le variabili globali sono in pratica “visibili” ovunque nel programma mentre il campo di visibilità delle variabili locali è ristretto al sottoprogramma nel quale sono state dichiarate. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 17. I tipi di dati 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 Byte Boolean Integer Long Single 1 2 2 4 4 Double Currency Decimal Intervallo byte byte byte byte byte Da 0 a 255 True o False Da -32.768 a 32.767 Da -2.147.483.648 a 2.147.483.6477 Da -3,402823E38 a -1,401298E-45 per valori negativi; da 1,401298E-45 a 3,402823E38 per valori positivi 8 byte Da -1,79769313486232E308 a -4,94065645841247E-324 per valori negativi; da 4,94065645841247E-324 a 1,79769313486232E308 per valori positivi. 8 byte Da -922.337.203.685.477,5808 a 922.337.203.685.477,5807 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 8 byte Dall'1 gennaio 100 al 31 dicembre 9999 4 byte Qualsiasi riferimento Object 10 byte + lunghezza stringa Da 0 a circa 2 miliardi Date Object String 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 18. La sintassi del VBA Numeri   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 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 19. La sintassi del VBA 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 1999 può essere rappresentato come illustrato Dim UltimoDellAnno as Date UltimoDellAnno = #31/12/1999# CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 20. La sintassi del VBA Stringhe di testo   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” CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 21. La sintassi del VBA 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 mod : resto di una divisione CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 22. La sintassi del VBA L’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 : CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE a = a + 1
  • 23. La sintassi del VBA Operatori di confronto Operatore Minore Minore o uguale Uguale Diverso Maggiore Maggiore o uguale Identico tipo Analisi per criteri Simbolo < <= = <> > >= Is Like Esempio A<B A <= B A=B A <> B A>B A >= B A Is B A Like B CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE Applicabile a qualunque qualunque qualunque qualunque qualunque qualunque Object String
  • 24. La Sintassi del VBA Istruzioni di Controllo del Flusso CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 25. La sintassi del VBA Condizioni e Cicli  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 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 26. La sintassi del VBA Condizioni e Cicli  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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 27. La sintassi del VBA Condizioni e Cicli  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 falliscono>] End Select se tutti CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE i confronti
  • 28. La sintassi del VBA Condizioni e Cicli  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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 29. La sintassi del VBA Condizioni e Cicli  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 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 30. La sintassi del VBA Condizioni e Cicli  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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 31. La sintassi del VBA Condizioni e Cicli  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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 32. La sintassi del VBA Condizioni e Cicli  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 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 33. La sintassi del VBA Condizioni e Cicli  Si osservi la condizione. Essa risulta dalla combinazione di due confronti. Si tratta di Numero = 5 e Numero = 10  L'uso dell'operatore OR permette di verificare se almeno uno di essi ha esito positivo. In tal caso, non deve essere fornita alcuna indicazione. La stringa deve essere creata, infatti, solo quando entrambi i confronti hanno esito negativo, ovvero quando l'espressione (Numero = 5) Or (Numero = 10)  restituisce il valore False, ovvero quando è verificata la condizione: Not ((Numero = 5) Or (Numero = 10)) CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 34. La sintassi del VBA Condizioni e Cicli  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.     CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 35. La sintassi del VBA Condizioni e Cicli  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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 36. La sintassi del VBA Condizioni e Cicli  Il ciclo While  Una soluzione più elegante prevede l'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. Gli effetti di un'iterazione senza fine sono evidenti. Il programma di fatto si blocca e per terminarlo occorre far ricorso al task manager del sistema operativo. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 37. La sintassi del VBA Condizioni e Cicli  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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 38. La sintassi del VBA Condizioni e Cicli  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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 39. La Sintassi del VBA Strutture Dati & Tipi Definiti dall’Utente CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 40. La sintassi del VBA Le 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 41. La sintassi del VBA Le 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 42. La sintassi del VBA Le 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 43. La sintassi del VBA Le 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 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 44. La sintassi del VBA Le 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 1. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 45. La sintassi del VBA Le 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 b = = myVector(5) 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.  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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 46. La sintassi del VBA Le 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  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). CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 47. La sintassi del VBA Le strutture dati     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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 48. La sintassi del VBA Le 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 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 49. La sintassi del VBA Le 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 50. La sintassi del VBA Le 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 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 51. La sintassi del VBA Le 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(20) As Single Nel caso di un array multidimensionale, tuttavia, quando si usa la parola chiave Preserve si può modificare soltanto l‟ultima dimensione. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 52. La sintassi del VBA Le 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 53. La sintassi del VBA Le 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 TitoloFinanziario che contiene al suo interno gli attributi che caratterizzano questo tipo di oggetto. L‟istruzione Type serve a questo scopo Type TitoloFinanziario Descrizione as String Prezzo as Double Volatilità as Double End Type CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 54. La sintassi del VBA Le strutture dati  Possiamo così dichiarare una nuova variabile, ad esempio un‟azione come un generico titolo Dim Azione As TitoloFinanziario  E‟ possibile accedere ai singoli attributi del titolo (campi) con la seguente sintassi PrezzoDelTitolo = Azione.Prezzo CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 55. La sintassi del VBA Le strutture dati  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 Azione PrezzoAzione = .Prezzo DescAzione = .Descrizione VolAzione = .Volatilità End With CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 56. La Sintassi del VBA Oggetti di Excel CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 57. La sintassi del VBA Iniziamo a lavorare con gli oggetti  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, come abbiamo già accennato, 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 58. La sintassi del VBA Iniziamo a lavorare con gli oggetti  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). CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 59. La sintassi del VBA Iniziamo a lavorare con gli oggetti  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 stati precedentemente descritti.  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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 60. La sintassi del VBA Iniziamo a lavorare con gli oggetti  La sintassi per specificare una proprietà o un metodo è la stessa Oggetto.Identificatore dove Oggetto è un qualsiasi riferimento valido ad un oggetto. Per creare i riferimenti agli oggetti potete impostare una variabile che faccia riferimento all’oggetto come nell’esempio seguente in cui definiamo una variabile di tipo Range Dim UnRange As Range  Identificatore è un qualsiasi nome valido di una proprietà o di un metodo. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 61. La sintassi del VBA Iniziamo a lavorare con gli oggetti    Nella sintassi notate che un punto (.) separa il riferimento all’oggetto dal nome della proprietà o del metodo. 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 62. La sintassi del VBA - Iniziamo a lavorare con gli oggetti 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 63. La sintassi del VBA - Iniziamo a lavorare con gli oggetti Pulsanti di Comando CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 64. La sintassi del VBA - Iniziamo a lavorare con gli oggetti Pulsanti di Comando CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 65. La sintassi del VBA - Iniziamo a lavorare con gli oggetti La Scatola degli Attrezzi CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 66. La sintassi del VBA - Iniziamo a lavorare con gli oggetti Celle e 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 67. La Sintassi del VBA Subroutine & Funzioni CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 68. La sintassi del VBA Procedure  Con Visual Basic è possibile creare due tipi di procedure:      procedure Sub procedure Function. 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. 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. 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 69. La sintassi del VBA Procedure: Un esempio 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 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 70. La sintassi del VBA Subroutine  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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 71. La sintassi del VBA Funzioni  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. 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 72. 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 73. 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 74. 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 75. Esempio Programmazione VBA Tassi d’Interesse, tassi di Sconto e Leggi di Capitalizzazione CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 76. Tassi d’interesse, di sconto e leggi di Capitalizzazione Costruiamo le funzioni VBA '---------------------------------------------------------' Autore : ' Funzione : Calcolo del tasso di sconto ' Versione : 1.0 ' Data : 23 ottobre 2001 ' Modifiche : prima versione ' Note : Questa funzione calcola il tasso di sconto ' assumendo un capitale nominale pari a ' 1000 Euro '---------------------------------------------------------Public Function TassoSconto(Valore As Single) As Single Dim Nominale As Single Nominale = 1000 TassoSconto = (Nominale - Valore) / Nominale End Function CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 77. Tassi d’interesse, di sconto e leggi di Capitalizzazione Costruiamo le funzioni VBA '---------------------------------------------------------' Autore : ' Funzione : Calcolo del tasso di interesse ' Versione : 1.0 ' Data : 23 ottobre 2001 ' Modifiche : prima versione ' Note : '---------------------------------------------------------Public Function TassoInteresse(Valore As Single) As Single Dim d As Single ' Viene richiamata la funzione TassoSconto d = TassoSconto(Valore) TassoInteresse = d / (1 - d) End Function CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 78. Tassi d’interesse, di sconto e leggi di Capitalizzazione Costruiamo le funzioni VBA  Provate adesso ad inserire in una delle due funzioni una modifica apparentemente innocua. Supponiamo di voler far scrivere alla funzione TassoSconto il nominale nella cella A1 del foglio Excel, a tale scopo modifichiamo la procedura TassoSconto inserendo subito dopo la riga Nominale = 1000 il comando Cells(1, 1).Value = Nominale  Effettuata questa modifica tornate nel foglio Excel e premete il tasto F9 per riaggiornare i calcoli delle formule presenti nel foglio stesso. Nelle due celle contenenti le formule di calcolo vedrete apparire la scritta #VALORE! questo accade perché la funzione ora sta tentando di modificare direttamente il valore di una cella del foglio di lavoro.   Notate che né il VBA né Excel visualizzano un messaggio di errore se tentate di usare come funzione definita dall‟utente una procedura che non soddisfa i requisiti richiesti per questo tipo di funzione. La funzione non sarà però in grado di restituire alcun risultato e questo produrrà il messaggio sopra riportato, tipico di Excel, che indica semplicemente che la formula per quella cella non è in grado di restituire alcun risultato valido. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 79. Tassi d’interesse, di sconto e leggi di Capitalizzazione Costruiamo le funzioni VBA  E’ facile scrivere una semplice funzione che calcola il tasso di interesse nominale su base annua in funzione del numero di pagamenti. Indichiamo con V0 il valore del capitale iniziale; V1 il valore del capitale al termine dell’anno; m il numero di pagamenti effettuati nell’arco temporale considerato (un anno);    Public Function InteresseBase_1(V1 As Single, _ V0 As Single, _ Optional m As Variant) As Single If IsMissing(m) Then MsgBox "Il calcolo viene effettuato ipotizzando un solo pagamento", _ vbInformation + vbOKOnly, "Attenzione!" m = 1 End If InteresseBase_1 = m * ((V1 / V0) ^ (1 / m) - 1) End Function CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 80. Tassi d’interesse, di sconto e leggi di Capitalizzazione Costruiamo le funzioni VBA  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.  Nel nostro caso la funzione appena implementata può essere utilizzata sia indicando il numero di pagamenti effettuati nel corso dell’anno (variabile m) sia indicando semplicemente il valore iniziale e finale del capitale. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 81. Tassi d’interesse, di sconto e leggi di Capitalizzazione Costruiamo le funzioni VBA   La comparsa della finestra di dialogo che richiama la nostra attenzione sul fatto che il calcolo è stato eseguito col valore predefinito di m è resa possibile dalla funzione nativa IsMissing.  La funzione IsMissing viene utilizzata per determinare se un argomento Variant facoltativo è stato specificato nella chiamata di una routine. IsMissing restituisce il valore logico True se nessun valore è stato passato per l'argomento specificato, in caso contrario restituisce False.  Nel nostro caso se l’utente non attribuisce esplicitamente un valore al parametro m la funzione la funzione IsMissing viene utilizzata per definire questo parametro pari a 1 e, nel contempo, avvisare l’utente della scelta implicitamente compiuta. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 82. Tassi d’interesse, di sconto e leggi di Capitalizzazione Costruiamo le funzioni VBA  Notate che il parametro m è stato esplicitamente dichiarato come Variant.   Questo perché la funzione IsMissing non può essere utilizzata per tipi di dati semplici quali Integer o Double poiché, a differenza dei tipi di dati Variant, per tali tipi di dati non è disponibile un bit per il flag "mancante". Tuttavia definire tipi di dati Variant può risultare oneroso, per questo nella sintassi degli argomenti facoltativi è possibile specificare un valore predefinito. Public Function InteresseBase_2(V1 As Single, _ V0 As Single, _ Optional m As Integer = 1) As Single If m = 1 Then MsgBox "Il calcolo viene effettuato ipotizzando un solo pagamento", _ vbInformation + vbOKOnly, "Attenzione!" End If InteresseBase_2 = m * ((V1 / V0) ^ (1 / m) - 1) End Function CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 83. Tassi d’interesse, di sconto e leggi di Capitalizzazione Costruiamo le funzioni VBA  Completiamo questo esempio con un’ulteriore versione della nostra funzione introducendo la possibilità di terminare l’esecuzione della procedura prima di giungere al termine della funzione stessa. Nel codice riportato nel seguente riquadroValore Descrizione viene dichiarata una variabile di tipo Costante intero alla quale attribuiamo il valoreOK ritorno della funzione Message di vbOK 1 Box vbCancel 2 Annulla Public Function InteresseBase_3(V1 As Single, _ vbAbort 3 Termina vbRetry 4 Riprova vbIgnore 5 Ignora Dim r As Integer vbYes 6 Sì If m = 1 Then vbNo 7 No V0 As Single, _ Optional m As Integer = 1) As Single r = MsgBox("Il calcolo viene effettuato ipotizzando un solo pagamento" & _ vbCr & "Desideri procedere?", vbQuestion + vbYesNo, "Attenzione!") If r = vbNo Then Exit Function End If InteresseBase_3 = m * ((V1 / V0) ^ (1 / m) - 1) End Function CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 84. Esempio Programmazione VBA Tassi d’Interesse, tassi di Sconto e Leggi di Capitalizzazione Tassi effettivi annuali e attualizzazione dei flussi CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 85. La Sintassi del VBA User Form CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 86. User Form Premere con il tasto destro sul nodo del VBA Project al quale vogliamo aggiungere il form CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 87. User Form Alcuni fra gli eventi più comuni dell’oggetto UserForm Evento Activate Click Initialize Terminate Quando Avviene 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. E’ l’evento che si genera ogni volta che l’utente preme con il mouse sulla superficie della finestra. 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. 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 88. Esempio Programmazione VBA Il Tasso Interno di Rendimento CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 89. User Form Il form per il calcolo del tasso interno di rendimento CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 90. User Form  La prima procedura che andremo a scrivere si riferisce all‟evento Initialize che si verifica ogniqualvolta la finestra di dialogo viene caricata in memoria.  Utilizzeremo questo evento per inizializzare il controllo di tipo combo box presente nella finestra stessa. Questo comando viene utilizzato per dare all‟utente la possibilità di ottenere, a parità di input, tre risultati distinti o meglio, tre forme diverse dello stesso risultato: 1. 2. 3. il valore della funzione di sconto; il tasso di interesse (capitalizzazione composta discreta); Private Sub UserForm_Initialize() il tasso di rendimento a scadenza (capitalizzazione composta continua). cmbRisultato.AddItem "Funzione di Sconto"  In cmbRisultato.AddItem "Tasso varie opzioni della casella combinata viene effettuato in fase di questo caso l‟inserimento delle Interesse" esecuzione utilizzando il metodo AddItem dell‟oggetto ComboBox. La sintassi del metodo AddItem è la cmbRisultato.AddItem "Tasso Rendimento a Scadenza" seguente End Sub oggetto.AddItem [ elemento [, indicevar]] dove oggetto indica un qualunque oggetto valido (come un combo box o una list box), elemento specifica l'elemento o la riga da aggiungere. Il numero corrispondente al primo elemento o riga è 0, il numero del secondo elemento o riga è 1 e così via. Infine indicevar è un numero intero che specifica la posizione di inserimento di un nuovo elemento o di una nuova riga nell'oggetto, quest‟ultimo parametro è facoltativo. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 91. Il Calcolo del Tasso Interno di Rendimento  L‟algoritmo di Newton-Raphson  Data una funzione f(x) il problema consiste nel determinare il valore di x* tale che f(x*) = 0.  L‟idea geometrica che sta alla base del metodo è la seguente.  Partendo da una stima iniziale x0 della soluzione si genera una successione di valori {xk} approssimando, per ogni k, la curva y = f(x) con la tangente nel punto (xk, f(xk)) e calcolando xk+1 come l‟intersezione della tangente con l‟asse delle x. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 92. Il Calcolo del Tasso Interno di Rendimento CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 93. Il Calcolo del Tasso Interno di Rendimento   L‟algoritmo di Newton-Raphson All‟equazione f(x) = 0 si sostituisce così l‟equazione della retta tangente f ( xk ) ( x xk 1 xk ) f ' ( xk ) xk f ( xk ) f ' ( xk ) CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE 0
  • 94. Il Calcolo del Tasso Interno di Rendimento START Input X0, EPS, MAX_ITER Calcola f(X0) Calcola f’(X0) Poni X0 = X Calcola X = X0 – f(X0)/f’(X0) Incrementa di un’unità il Numero Iterazioni Diagrammi di Flusso L’algoritmo di Newton-Raphson E’ vera almeno una delle seguenti affermazioni: 1) |X – X0| < EPS 2) Numero Iterazioni > MAX_ITER ? SI END CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE NO
  • 95. Il calcolo del tasso interno di rendimento  Valore attuale dei flussi N ck v k VA 100v N k 1 vk c 100v N k 1 Se le cedole sono costanti  1 vN cv 1 v N dal calcolo della sommatoria (serie geometrica) La funzione di cui occorre ricercare lo zero è quindi f (v) VAN ,c (v) P 1 vN cv 1 v 100v N CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE P 100v N
  • 96. Il calcolo del tasso interno di rendimento f (v )  1 vN cv 1 v P Con un po‟ di pazienza si può calcolare anche la derivata di questa funzione rispetto a v df (v) dv  100v N 1 vN c 1 v Nv N 1 (1 v) (1 v N ) cv 100 Nv N 2 1 v Nel codice, le due formule sono calcolate rispettivamente dalla funzione ValoreAttuale e DValoreAttuale. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE 1
  • 97. c = Val(txtCedola) m = Val(txtNumCedole) Prezzo = Val(txtPrezzo) eps = Val(txtTolleranza) ' ' ' ' valore della cedola numero di cedole in corso prezzo di mercato precisione di calcolo ItemSelezionato = cmbRisultato.ListIndex ' ' Viene utilizzato l'algoritmo di Newton-Raphson per il ' calcolo della funzione di sconto ' v = 0.5 ' valore iniziale della funzione di sconto ' Do v_old = v Delta = (ValoreAttuale(v_old, m, c) - Prezzo) _ / DValoreAttuale(v_old, m, c) v = v_old - Delta Loop Until Abs(v_old - v) < eps ' Select Case ItemSelezionato Case 0: txtRisultato = v Case 1: txtRisultato = Val(100 * (1 / v - 1)) Case 2: txtRisultato = Val(-100 * Log(v)) End Select CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE Vengono letti i valori scritti nelle caselle di testo Viene letto il calcolo desiderato attraverso la proprietà ListIndex dell’oggetto Combo Box
  • 98. La Sintassi del VBA Gestione delle Date CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 99. Funzioni per la 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 Function IsBisestile(Data As Date) As Boolean meno bisestile. 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 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 100. Funzioni per la 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 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 101. Funzioni per la 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. L‟esempio che proponiamo implementa una procedura per calcolare la data che si ottiene sottraendo un numero di mesi prefissato ad una data di partenza che viene passata come parametro di input. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 102. Funzioni per la 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 Lunedì Martedì Mercoledì Giovedì Venerdì Sabato vbSunday vbMonday vbTuesday vbWednesday vbThursday vbFriday vbSaturday CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 103. Funzioni per la 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 104. Funzioni per la gestione delle date  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-gen96, la funzione restituirà 29-feb-96, in quanto il 1996 è un anno bisestile. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 105. Funzioni per la 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 106. Funzioni per la gestione delle date     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. 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 107. Funzioni per la 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. 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. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 108. Elementi di Programmazione Le Macro di Excel Ambiente di Sviluppo del VBA La Sintassi del VBA Matlab in sintesi (estrema!) Matlab Excel Linker CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 109. Matlab in Sintesi (Estrema!!!)    In questa sezione cercheremo di fornire una breve introduzione all‟uso di Matlab, fornendo il materiale sufficiente per implementare i metodi numerici che consideremo in seguito. L‟ambiente Matlab è di uso estremamente semplice ed è possibile avere una panoramica introduttiva utilizzando i comandi intro e demo. Per ulteriori informazioni si rimanda alla guida all‟uso di Matlab e al sito Web www.mathworks.com. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 110. Descrizione generale di Matlab  MATLAB ( = MATrix LABoratory):      un linguaggio di programmazione per applicazioni scientifiche e numeriche vasto set di funzioni predefinite interprete di comandi possibilita' di scrivere nuove funzioni libreria di TOOLBOX per svariate applicazioni; ad es. Financial Toolbox, Analisi Serie Storiche, Risoluzione Eq. Differenziali, etc... CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 111. L’interfaccia di Matlab  Interfaccia utente: la Command Window da‟ accesso diretto all‟interprete (scrittura diretta di comandi. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 112. Matlab come calcolatrice...   La modalita‟ di impiego piu‟ “semplice”: per valutare espressioni numeriche. Esempio: per calcolare 4 2 sin 0.2 2 e‟ sufficiente digitare al prompt » »4 + sqrt(2) - sin(0.2*pi)^2 + exp(2) ans = 12.4578  Il risultato viene scritto nella variabile ans. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE e 2
  • 113. Definizione di variabili  È possibile definire variabili e espressioni non numeriche più complesse.  Esempio: » a=4; b=2; » a*b ans = 8  Per cancellare una variabile (es. a): » clear a CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 114. Il Workspace   Ogni variabile definita in questo modo viene conservata in memoria, nel Workspace. Il comando whos mostra una lista delle variabili definite: » whos Name a ans b Grand total Size Bytes 1x1 8 1x1 8 1x1 8 is 3 elements using CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE Class double array double array double array 24 bytes
  • 115. Lettura e scrittura su file Mediante i comandi load e save e‟ possibile salvare su file le variabili del workspace.     load nomefile variabile1 variabile2 ... carica dal file nomefile.mat le variabili elencate. save nomefile variabile1 variabile2 ... scrive nel file nomefile.mat le variabili elencate. load nomefile carica tutte le variabili in nomefile. Save nomefile salva tutto il workspace in nomefile. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 116. Quindi...  Esiste un insieme (molto vasto) di funzioni predefinite (come sin e sqrt nell‟esempio precedente).  A differenza dei normali linguaggi (C, Pascal…) non occorre dichiarare le variabili. L‟assegnazione coincide con la dichiarazione. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 117. Una funzione fondamentale!  help   help nome_toolbox   guida „on-line‟ di MATLAB sullo specifico comando ver   per vedere la lista dei comandi installati in un toolbox help nome_comando   per vedere la lista dei toolboxes installati info sulla versione di MATLAB helpwin  finestra di help di MATLAB CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 118. Definizione di matrici  Come si definisce una matrice in Matlab? Esempio: definire la matrice 2x2 » A = [ 1, 2; 3, 4 ] A= 1 2 3 4  A 1 2 3 4 Come si accede agli elementi di una matrice: » A( 1, 2 ) ans = 2 Indici (riga e colonna) dell’elemento di interesse CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 119. La wildcard :  Per accedere a intere righe o colonne di una matrice, si usa la wildcard :  Es.: selezionare la prima riga di A » A(1,:) ans = 1 2  Es.: selezionare la seconda colonna di A » A(:,2) ans = 2 4 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 120. Selezionare sottomatrici  Se definiamo » B=[ 1, 2, 3; 4, 5, 6 ] B = 1 2 3 Sottomatrice 4 5 6  di interesse Abbiamo che » B( 1:2 , 2:3 ) ans = 2 3 5 6 Indici della sottomatrice di interesse CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 121. Operazioni (elementari) sulle matrici  Sono definiti gli operatori +,-,* e ^ » A = [ 1 2; 3 4 ]; B = [ 5 6; 7 8 ] » A+B » A*B ans = ans = 6 8 19 22 10 12 43 50 » B-A ans = 4 4 4 4 » A^2 ans = 7 15 10 22 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 122. Operazioni (elementari) sulle matrici  Sono definiti gli operatori .*, ./ e .^, che si applicano elemento per elemento: » A = [ 1 2; 3 4 ]; B = [ 5 6; 7 8 ]; » A.*B ans = 5 12 21 32 » A.^B ans = 1 64 2187 65536 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 123. Operazioni (elementari) sulle matrici  Determinante:  » det(A) ans = -2  Autovalori: » eig(A) ans = -0.3723 5.3723 Matrice inversa: » inv(A) ans = -2.0000 1.5000  1.0000 -0.5000 Matrice trasposta: » A' ans = 1 2 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE 3 4
  • 124. Altre operazioni   Osservazione importante: NON occorre definire le dimensioni in modo esplicito! Per conoscere le dimensioni di una matrice: size. Altre operazioni:    rank -> calcolo del rango di una matrice trace -> calcolo della traccia di una matrice norm -> calcolo della norma di una matrice CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 125. Alcune matrici “speciali” matrice identita‟ nxn;  eye(n,n)  zeros(n,m) matrice di zeri nxm;  ones(n,m) matrice di uni nxm;  rand(n,m) matrice nxm con elementi distribuiti uniformemente tra 0 e 1. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 126. Vettori  I vettori hanno due funzioni fondamentali in Matlab:   rappresentazione dei polinomi (un polinomio e‟ descritto dal vettore dei suoi coefficienti); rappresentazione di segnali (un segnale e‟ rappresentato mediante la sequenza dei valori che assume in un insieme di istanti di tempo, quindi mediante un vettore). CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 127. Definizione di vettori (1)  » v=(0:10) v = 0 8  9 1 2 3 4 5 6 10 » v=(1:0.5:3) v = 1.0000 Valore finale 1.5000 2.0000 2.5000 Passo Valore iniziale CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE 3.0000 7
  • 128. Definizione di vettori  Come matrici riga o colonna: » v = [ 3 6 1 7 ] v = 3 6 1  7 Polinomi: sono rappresentati come vettori. 2 Es.: 3s 2 s 1 » pol = [ 3 2 1 ] pol = 3 2 1 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 129. Operazioni sui polinomi  Calcolo delle radici roots » roots( pol ) ans = -0.3333 + 0.4714i -0.3333 - 0.4714i  Valutazione in un punto polyval » polyval( pol, 0 ) ans = 1 CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 130. File .m e functions  Un file .m (M-file) è un programma riconoscibile da Matlab. La scrittura di files .m permette di:  Sperimentare con un algoritmo, senza dover reintrodurre una lunga lista di comandi  Ottenere una documentazione permanente per un lavoro  Ottenere programmi che possono essere riutilizzati, per esempio cambiando solo i dati  Scambiare programmi con altri utenti CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 131. File .m e functions  I file .m sono di due tipi:   Script M-files: sono files di comandi. Non hanno variabili in entrata e in uscita e operano sulle variabili del workspace function M-files: sono files di comandi, che hanno argomenti in entrata e in uscita. Le variabili interne a questi programmi non influenzano le variabili del workspace CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 132. Esempio: file radice.m % Questo file calcola la radice degli elementi di % una matrice a, se a>0, altrimenti da' un messaggio di errore if a>=0 a=sqrt(a) else display('errore') end  Attenzione: nel workspace deve essere stata definita una variabile a. Inoltre l‟esecuzione di questo script modifica il contenuto della variabile a CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 133. Esempio: Function M-files function a=radfunz(x) % RADFUNZ(X) calcola la radice degli elementi di X % se X>=0, altrimenti stampa un messaggio di errore % if x>=0 a=sqrt(x) else display('errore') end Questo file deve essere salvato come radfunz.m CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 134. Struttura di una function  La function inizia con una riga che ne specifica il nome (nell’esempio radfunz), le variabili di input e le variabili di output.  La function deve essere salvata in un file con lo stesso nome (nell’esempio radfunz.m)  I commenti dopo la prima riga faranno parte dello help on-line  Seguono le istruzioni con eventuali altri commenti CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 135. Elementi di Programmazione Le Macro di Excel Ambiente di Sviluppo del VBA La Sintassi del VBA Matlab in sintesi (estrema!) Matlab Excel Linker CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 136. Excel Linker  What Is Excel Link?  Excel Link is a software add-in that integrates Microsoft Excel and MATLAB® in a Microsoft Windows-based computing environment.  By connecting Excel and MATLAB, you can access the numerical, computational, and graphical power of MATLAB from Excel worksheet and macro programming tools.  Excel Link lets you exchange and synchronize data between the two environments. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 137. Excel Linker  Understanding the Environment     Excel Link communicates between the Excel workspace and the MATLAB workspace. It positions Excel as a front end to MATLAB. You use Excel Link functions from an Excel worksheet or macro, and you never have to leave the Excel environment. With a small number of functions to manage the link and manipulate data, Excel Link is powerful in its simplicity. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 138. Excel Linker  Configuring Excel to Work with Excel Link   Once you have installed Excel Link, you are ready to configure Excel. You need do these steps only once:       Start Microsoft Excel. Pull down the Tools menu, select Add-Ins and click Browse. Find and select the Excel Link add-in excllink.xla under <matlab>/toolbox/exlink. Click OK. Note Throughout this document the notation <matlab> represents the MATLAB root directory, the directory where MATLAB is installed on your system. Back in the Add-Ins window, make sure there's a check in the box for Excel Link for use with MATLAB and click OK. The Excel Link add-in loads now and with each subsequent invocation of Excel. Watch for the appearance of the MATLAB Command Window button on the Windows taskbar. Note The MATLAB desktop does not start automatically at this time. If you want to run the desktop, enter the desktop command in the command window. Watch for the appearance of the Excel Link toolbar on your Excel worksheet. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 139. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 140. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 141. evalstring esegue il comando matlab corrispondente alla stringa passata come parametro getmatrix trasferisce da Matlab verso Excel il contenuto di una matrice putmatrix permette di inviare a Matlab il contenuto di una matrice CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 142. Excel Linker  Starting Excel Link  Automatic Start      When installed and configured according to the preceding instructions, Excel Link and MATLAB automatically start when you start Excel. If you do not want Excel Link and MATLAB to start automatically when you start Excel, enter =MLAutoStart("no") in a worksheet cell. This function changes the initialization file so that Excel Link and MATLAB no longer start automatically when you start Excel. See MLAutoStart in Function Reference. Manual Start     To start Excel Link and MATLAB manually from Excel, pull down the Tools menu and select Macro. In the Macro Name/Reference box enter matlabinit and click Run. Watch for the MATLAB Command Window button to appear on the taskbar. See matlabinit in Function Reference. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 143. Excel Linker Link Management Functions  Excel Link provides four link management functions to initialize, start, and stop Excel Link and MATLAB.  1. matlabinit Initialize Excel Link and start MATLAB process. 2. MLAutoStart Automatically start MATLAB process. 3. MLClose Terminate MATLAB process. 4. MLOpen Start MATLAB process.  You can invoke any link management function except matlabinit as a worksheet cell formula or in a macro.  You invoke matlabinit from the Excel Tools Macro menu or in a macro subroutine.  Use MLAutoStart to toggle automatic startup. If you install and configure Excel Link according to the default instructions, Excel Link and MATLAB automatically start every time you start Excel. If you choose manual startup, use matlabinit to initialize Excel Link and start MATLAB.  Use MLClose to stop MATLAB without stopping Excel, and use MLOpen or matlabinit to restart MATLAB in the same Excel session. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 144. Excel Linker  Data Management Functions  Excel Link provides nine data management functions to copy data between Excel and MATLAB and to execute MATLAB commands from Excel.          matlabfcn matlabsub Evaluate MATLAB command given Excel data. Evaluate MATLAB command given Excel data and designate output location. MLAppendMatrix Create or append MATLAB matrix with data from Excel worksheet. MLDeleteMatrix Delete MATLAB matrix. MLEvalString Evaluate command in MATLAB. MLGetMatrix Write contents of MATLAB matrix in Excel worksheet. MLGetVar Write contents of MATLAB matrix in Excel VBA (Visual Basic for Applications) variable. MLPutMatrix Create or overwrite MATLAB matrix with data from Excel worksheet. MLPutVar Create or overwrite MATLAB matrix with data from Excel VBA variable. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 145. Excel Linker  Data Management Functions       You can invoke any data management function except MLGetVar and MLPutVar as a worksheet cell formula or in a macro. You can invoke MLGetVar and MLPutVar only in a macro. Use MLAppendMatrix, MLPutMatrix, and MLPutVar to copy data from Excel to MATLAB. Use MLEvalString to execute MATLAB commands from Excel. Use MLDeleteMatrix to delete a MATLAB variable. Use matlabfcn, matlabsub, MLGetMatrix and MLGetVar to copy data from MATLAB to Excel. CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE
  • 146. Esempio Programmazione VBA + MATLAB con Excel Link Semplici Calcoli Finanziari CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE