Capitolo 2 elementi di programmazione in vba

146
CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALE COMPUTAZIONALE Finanza Computazionale Elementi di Programmazione in VBA

Transcript of Capitolo 2 elementi di programmazione in vba

Page 1: Capitolo 2   elementi di programmazione in vba

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

Finanza Computazionale

Elementi di Programmazione in VBA

Page 2: Capitolo 2   elementi di programmazione in vba

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

Page 3: Capitolo 2   elementi di programmazione in vba

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

Le Macro di Excel

Cartelle Fogli Grafici Altri

oggetti

Page 4: Capitolo 2   elementi di programmazione in vba

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

Azione Operazione

Aprire un File Premere con il mouse sul pulsante Apri della barra degli strumenti standard oppure selezionare la voce Apri dal menu File. Si aprirà un form di navigazione standard dal quale selezionare il file desiderato.

Salvare un File Scegliere Salva dal menu File o, se si desidera cambiare nome, scegliere Salva con nome… anche in questo caso si aprirà un form di navigazione Windows col quale aprire la cartella nella quale salvare il nuovo file digitando il nome nell’apposita casella.

Selezionare un foglio di lavoro Fare clic sulla scheda relativa

Selezionare una cella Fare clic sulla cella

Selezionare un intervallo di celle Tenendo premuto il pulsante del mouse trascinare da un angolo all’angolo opposto dell’intervallo di celle desiderato

Assegnare un nome ad un intervallo di celle

Selezionare la o le celle come descritto nei punti precedenti, dal menu Inserisci scegliere il sottomenu Nome e di questo la voce Definisci… nel form Definisci Nome digitare il nome nella casella “Nomi nella cartella di lavoro”

Immettere dati Selezionare una cella e digitare i dati quindi premere INVIO o cambiare cella selezionata

Scrivere una formula Digitare = e il resto della formula dopodiché premere INVIO

Operazioni Elementari

Le Macro di Excel

Page 5: Capitolo 2   elementi di programmazione in vba

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

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.

Le Macro di Excel

Page 6: Capitolo 2   elementi di programmazione in vba

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

Le Macro di ExcelRegistrare una Macro

Page 7: Capitolo 2   elementi di programmazione in vba

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

Visualizzare il codice della macro

Oltre a vedere la Oltre a vedere la macro in esecuzione macro in esecuzione è possibile è possibile esaminare il codice esaminare il codice prodotto e farlo prodotto e farlo girare istruzione per girare istruzione per istruzione. istruzione.

Quest’attività oltre Quest’attività oltre al chiaro valore al chiaro valore didattico ha un didattico ha un enorme utilità ai fini enorme utilità ai fini del test dei del test dei programmi prodotti programmi prodotti (debug). (debug).

Page 8: Capitolo 2   elementi di programmazione in vba

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

Page 9: Capitolo 2   elementi di programmazione in vba

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

GESTIONE PROGETTI. Questa sottofinestra contiene un diagramma ad albero delle cartelle di lavoro aperte e degli oggetti Excel in esse contenuti (oggetti, moduli, riferimenti, form e così via). Si userà la finestra gestione progetti per navigare fra i vari moduli ed altri oggetti di un progetto VBA

FINESTRA PROPRIETA’. In questa finestra compare un elenco di tutte le proprietà dell’oggetto attualmente selezionato.

FINESTRA DEL CODICE. La finestra del codice è quella in cui si può esaminare, modificare o creare ex-novo il codice sorgente VBA. Questa finestra viene usata per scrivere nuove macro o per editare macro esistenti.

FINESTRA IMMEDIATA. In questa finestra è possibile inserire comandi diretti per la visualizzazione del valore assunto dalle variabili (usata in fase di debug)

FINESTRA CONTROLLO. Consente il monitoraggio del contenuto di una variabile o dei valori generati da un’espressione (usata in fase di debug).

Identifica un progetto VBA ovvero un insieme di oggetti e il nome fra parentesi è il nome della cartella in cui esso è memorizzato (in questo caso Cartel1);

Identifica un oggetto di tipo foglio di lavoro contenuto nella cartella il cui nome appare fra parentesi; tutti i fogli di lavoro appaiono identificati dalla parola Foglio seguita da un numero, ma è importante non confonderlo con il nome che appare sul cavalierino nella finestra di Excel e che nella finestra Progetto appare fra parentesi; per ogni foglio di lavoro presente nella cartella sono presenti altrettante voci.

Indica la cartella

Page 10: Capitolo 2   elementi di programmazione in vba

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

Page 11: Capitolo 2   elementi di programmazione in vba

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

Page 12: Capitolo 2   elementi di programmazione in vba

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

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.

Page 13: Capitolo 2   elementi di programmazione in vba

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

Page 14: Capitolo 2   elementi di programmazione in vba

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

La Sintassi del VBA

Variabili & Operatori

Page 15: Capitolo 2   elementi di programmazione in vba

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

La sintassi del VBALe 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.

Page 16: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBALe variabili

Page 17: Capitolo 2   elementi di programmazione in vba

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

Tipo di dato è il termine che fa riferimento alla particolare natura dei dati che il VBA può memorizzare e manipolare quali testo o numeri. La tabella che segue elenca i tipi di dati supportati e indica lo spazio su disco e l'intervallo valido per ciascun tipo di dati.

Tipo di dati Spazio su disco Intervallo

Byte 1 byte Da 0 a 255Boolean 2 byte True o FalseInteger 2 byte Da -32.768 a 32.767Long 4 byte Da -2.147.483.648 a 2.147.483.6477Single 4 byte Da -3,402823E38 a -1,401298E-45 per valori negativi; da

1,401298E-45 a 3,402823E38 per valori positiviDouble 8 byte Da -1,79769313486232E308 a -4,94065645841247E-324 per

valori negativi; da 4,94065645841247E-324 a 1,79769313486232E308 per valori positivi.

Currency 8 byte Da -922.337.203.685.477,5808 a 922.337.203.685.477,5807Decimal 14 byte +/-79.228.162.514.264.337.593.543.950.335 senza

virgola; +/-7,9228162514264337593543950335 con 28 decimali; il numero minore diverso da zero è +/-0,0000000000000000000000000001

Date 8 byte Dall'1 gennaio 100 al 31 dicembre 9999Object 4 byte Qualsiasi riferimento ObjectString 10 byte + lunghezza stringa Da 0 a circa 2 miliardiVariant(con numeri) 16 byte Qualsiasi valore numerico fino all'intervallo di un DoubleVariant(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.

I tipi di dati

Page 18: Capitolo 2   elementi di programmazione in vba

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

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

La sintassi del VBANumeri

Page 19: Capitolo 2   elementi di programmazione in vba

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

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#

La sintassi del VBADate

Page 20: Capitolo 2   elementi di programmazione in vba

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

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”

La sintassi del VBAStringhe di testo

Page 21: Capitolo 2   elementi di programmazione in vba

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

La sintassi del VBAOperatori 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

Page 22: Capitolo 2   elementi di programmazione in vba

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

La sintassi del VBAL’operatore di assegnazione L’operatore di assegnazione coincide graficamente con

l’operatore di confronto di uguaglianza. Ciò non causa generalmente nessuna confusione nel programmatore che si abitua con una certa rapidità a riconoscerli e distinguerli nel loro significato.

L’unico aspetto che lascia momentaneamente confusi chi non ha mai avuto esperienze di sviluppo software è proprio il carattere uguale come operatore di assegnazione in quanto si tende a considerare l’uguale un’asserzione di uguaglianza fra il valore posto alla sua destra e quello posto alla sua sinistra

INCREMENTO DI UNA VARIABILE : a = a + 1

Page 23: Capitolo 2   elementi di programmazione in vba

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

La sintassi del VBA Operatori di confronto

Operatore Simbolo Esempio Applicabile aMinore < A < B qualunqueMinore o uguale <= A <= B qualunqueUguale = A = B qualunqueDiverso <> A <> B qualunqueMaggiore > A > B qualunqueMaggiore o uguale >= A >= B qualunqueIdentico tipo Is A Is B ObjectAnalisi per criteri Like A Like B String

Page 24: Capitolo 2   elementi di programmazione in vba

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

La Sintassi del VBA

Istruzioni di Controllo del Flusso

Page 25: Capitolo 2   elementi di programmazione in vba

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

La sintassi del VBACondizioni 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><istruzioni da eseguire se la condizione è vera>[Else[Else

<istruzioni da eseguire se la condizione è falsa>]<istruzioni da eseguire se la condizione è falsa>] End IfEnd If

Page 26: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBACondizioni e Cicli

Page 27: Capitolo 2   elementi di programmazione in vba

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

La struttura Select Case

E’ possibile ricorrere ad una diversa struttura di controllo denominata Select Case, la cui sintassi è la seguente:

Select Case <variabile>Case <valore 1>:

<blocco istruzioni 1>[Case <valore 2>:

<blocco istruzioni 2>]..[Case <valore n>:

<blocco istruzioni n>][Case Else:

<istruzioni da eseguire se tutti i confronti falliscono>]

End Select

La sintassi del VBACondizioni e Cicli

Page 28: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBACondizioni e Cicli

Page 29: Capitolo 2   elementi di programmazione in vba

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

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

La sintassi del VBACondizioni e Cicli

Page 30: Capitolo 2   elementi di programmazione in vba

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

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) ThenTesto = "Il numero è compreso fra 10 e 100"

ElseTesto = "Il numero non appartiene all'intervallo"

End if

Come è possibile notare, la struttura risulta più semplice, in quanto composta da un solo livello.

La sintassi del VBACondizioni e Cicli

Page 31: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBACondizioni e Cicli

Page 32: Capitolo 2   elementi di programmazione in vba

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

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

La sintassi del VBACondizioni e Cicli

Page 33: Capitolo 2   elementi di programmazione in vba

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

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

La sintassi del VBACondizioni e Cicli

Page 34: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBACondizioni e Cicli

Page 35: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBACondizioni e Cicli

Page 36: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBACondizioni e Cicli

Page 37: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBACondizioni e Cicli

Page 38: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBACondizioni e Cicli

Page 39: Capitolo 2   elementi di programmazione in vba

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

La Sintassi del VBA

Strutture Dati & Tipi Definiti dall’Utente

Page 40: Capitolo 2   elementi di programmazione in vba

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

Page 41: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBA Le strutture dati

Page 42: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBA Le strutture dati

Page 43: Capitolo 2   elementi di programmazione in vba

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

Page 44: Capitolo 2   elementi di programmazione in vba

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

In maniera analoga entrambe le dichiarazioni sono valide Dim myMatrix(10,10) As IntegerDim 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.

La sintassi del VBA Le strutture dati

Page 45: Capitolo 2   elementi di programmazione in vba

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

Il riferimento ad un generico elemento all’interno di un vettore o di una matrice avviene specificando l’indice all’interno di parentesi.

Esempio:

a = myVector(5) b = myMatrix(7,6)

Nel primo caso alla variabile a viene assegnato il valore del 5° elemento del vettore myVector, nel secondo b è posto uguale all’elemento di matrice posto nella 7a riga, 6a colonna.

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.

La sintassi del VBA Le strutture dati

Page 46: Capitolo 2   elementi di programmazione in vba

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

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) = 0Next

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

La sintassi del VBA Le strutture dati

Page 47: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBA Le strutture dati

Page 48: Capitolo 2   elementi di programmazione in vba

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

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

La sintassi del VBA Le strutture dati

Page 49: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBA Le strutture dati

Page 50: Capitolo 2   elementi di programmazione in vba

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

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

La sintassi del VBA Le strutture dati

Page 51: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBA Le strutture dati

Page 52: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBA Le strutture dati

Page 53: Capitolo 2   elementi di programmazione in vba

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

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

La sintassi del VBA Le strutture dati

Page 54: Capitolo 2   elementi di programmazione in vba

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

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

La sintassi del VBA Le strutture dati

Page 55: Capitolo 2   elementi di programmazione in vba

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

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

La sintassi del VBA Le strutture dati

Page 56: Capitolo 2   elementi di programmazione in vba

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

La Sintassi del VBA

Oggetti di Excel

Page 57: Capitolo 2   elementi di programmazione in vba

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

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.

Page 58: Capitolo 2   elementi di programmazione in vba

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

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

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

La sintassi del VBA Iniziamo a lavorare con gli oggetti

Page 59: Capitolo 2   elementi di programmazione in vba

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

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.

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.

La sintassi del VBA Iniziamo a lavorare con gli oggetti

Page 60: Capitolo 2   elementi di programmazione in vba

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

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.

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.

La sintassi del VBA Iniziamo a lavorare con gli oggetti

Page 61: Capitolo 2   elementi di programmazione in vba

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

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.

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.

La sintassi del VBA Iniziamo a lavorare con gli oggetti

Page 62: Capitolo 2   elementi di programmazione in vba

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

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.

Page 63: Capitolo 2   elementi di programmazione in vba

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

La sintassi del VBA - Iniziamo a lavorare con gli oggetti Pulsanti di Comando

Page 64: Capitolo 2   elementi di programmazione in vba

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

La sintassi del VBA - Iniziamo a lavorare con gli oggetti Pulsanti di Comando

Page 65: Capitolo 2   elementi di programmazione in vba

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

La sintassi del VBA - Iniziamo a lavorare con gli oggettiLa Scatola degli Attrezzi

Page 66: Capitolo 2   elementi di programmazione in vba

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

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.

 

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.

 

La sintassi del VBA - Iniziamo a lavorare con gli oggettiCelle e Range

Page 67: Capitolo 2   elementi di programmazione in vba

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

La Sintassi del VBA

Subroutine & Funzioni

Page 68: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBAProcedure

Page 69: Capitolo 2   elementi di programmazione in vba

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

 

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

 

La sintassi del VBA

Procedure: Un esempioLa sintassi del VBA

Procedure: Un esempio

Page 70: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBASubroutine

Page 71: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBAFunzioni

Page 72: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBAFunzioni di Interazione con l’utente

Page 73: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBAFunzioni di Interazione con l’utente

Page 74: Capitolo 2   elementi di programmazione in vba

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

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.

La sintassi del VBAFunzioni definite dall’utente

Page 75: Capitolo 2   elementi di programmazione in vba

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

Esempio ProgrammazioneVBA

Esempio ProgrammazioneVBA

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

Page 76: Capitolo 2   elementi di programmazione in vba

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

Tassi d’interesse, di sconto e leggi di CapitalizzazioneCostruiamo 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

 

Page 77: Capitolo 2   elementi di programmazione in vba

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

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

Tassi d’interesse, di sconto e leggi di CapitalizzazioneCostruiamo le funzioni VBA

Page 78: Capitolo 2   elementi di programmazione in vba

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

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.

Tassi d’interesse, di sconto e leggi di CapitalizzazioneCostruiamo le funzioni VBA

Page 79: Capitolo 2   elementi di programmazione in vba

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

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

Tassi d’interesse, di sconto e leggi di CapitalizzazioneCostruiamo le funzioni VBA

Page 80: Capitolo 2   elementi di programmazione in vba

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

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.

Tassi d’interesse, di sconto e leggi di CapitalizzazioneCostruiamo le funzioni VBA

Page 81: Capitolo 2   elementi di programmazione in vba

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

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.

Tassi d’interesse, di sconto e leggi di CapitalizzazioneCostruiamo le funzioni VBA

Page 82: Capitolo 2   elementi di programmazione in vba

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

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

Tassi d’interesse, di sconto e leggi di CapitalizzazioneCostruiamo le funzioni VBA

Page 83: Capitolo 2   elementi di programmazione in vba

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

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 riquadro viene dichiarata una variabile di tipo intero alla quale attribuiamo il valore di ritorno della funzione Message Box

Public Function InteresseBase_3(V1 As Single, _

V0 As Single, _

Optional m As Integer = 1) As Single

 

Dim r As Integer

If m = 1 Then

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

Tassi d’interesse, di sconto e leggi di CapitalizzazioneCostruiamo le funzioni VBA

Costante Valore Descrizione

vbOK 1 OK

vbCancel 2 Annulla

vbAbort 3 Termina

vbRetry 4 Riprova

vbIgnore 5 Ignora

vbYes 6 Sì

vbNo 7 No

Page 84: Capitolo 2   elementi di programmazione in vba

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

Esempio ProgrammazioneVBA

Esempio ProgrammazioneVBA

Tassi d’Interesse, tassi di Sconto e Leggi di Capitalizzazione Tassi effettivi annuali e attualizzazione dei flussi

Tassi d’Interesse, tassi di Sconto e Leggi di Capitalizzazione Tassi effettivi annuali e attualizzazione dei flussi

Page 85: Capitolo 2   elementi di programmazione in vba

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

La Sintassi del VBA

User Form

Page 86: Capitolo 2   elementi di programmazione in vba

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

Page 87: Capitolo 2   elementi di programmazione in vba

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

User FormAlcuni fra gli eventi più comuni dell’oggetto UserForm

Evento Quando Avviene

Activate Questo evento viene scatenato ogni volta che la finestra diventa attiva cioè passa in primo piano. Questo evento è molto utile ogniqualvolta si renda necessario aggiornare il contenuto dei controlli in modo da riflettere i cambiamenti che possono essere intervenuti quando la finestra non era attiva.

Click E’ l’evento che si genera ogni volta che l’utente preme con il mouse sulla superficie della finestra.

Initialize Questo evento si genera quando l’oggetto finestra viene caricato in memoria. Come vedremo questo evento può essere scatenato dall’istruzione Load o dal metodo Show. Questo evento si utilizza per impostare l’aspetto iniziale della finestra e i controlli eventualmente contenuti nel form. Nel nostro esempio utilizzeremo questo evento per caricare una serie di valori predefiniti in un combo box all’interno della finestra di dialogo.

Terminate Evento scatenato quando l’oggetto finestra viene scaricato dalla memoria. Questo evento viene utilizzato in tutte quelle circostanze ove si rende necessario liberare le variabili dell’oggetto prima di chiudere quest’ultimo.

Page 88: Capitolo 2   elementi di programmazione in vba

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

Esempio ProgrammazioneVBA

Esempio ProgrammazioneVBA

Il Tasso Interno di Rendimento Il Tasso Interno di Rendimento

Page 89: Capitolo 2   elementi di programmazione in vba

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

Il form per il calcolo del tasso interno di rendimento

User Form

Page 90: Capitolo 2   elementi di programmazione in vba

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALECORSO 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. il valore della funzione di sconto;

2. il tasso di interesse (capitalizzazione composta discreta);

3. il tasso di rendimento a scadenza (capitalizzazione composta continua).

 

 

In questo caso l’inserimento delle varie opzioni della casella combinata viene effettuato in fase di esecuzione utilizzando il metodo AddItem dell’oggetto ComboBox. La sintassi del metodo AddItem è la seguente

 

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.

Private Sub UserForm_Initialize()

cmbRisultato.AddItem "Funzione di Sconto"

cmbRisultato.AddItem "Tasso Interesse"

cmbRisultato.AddItem "Tasso Rendimento a Scadenza"

End Sub

Page 91: Capitolo 2   elementi di programmazione in vba

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

Page 92: Capitolo 2   elementi di programmazione in vba

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

Il Calcolo del Tasso Interno di Rendimento

Page 93: Capitolo 2   elementi di programmazione in vba

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

L’algoritmo di Newton-Raphson

All’equazione f(x) = 0 si sostituisce così l’equazione della retta tangente

0)(')()( kkk xfxxxf 0)(')()( kkk xfxxxf

)('

)(1

k

kkk xf

xfxx )('

)(1

k

kkk xf

xfxx

Il Calcolo del Tasso Interno di Rendimento

Page 94: Capitolo 2   elementi di programmazione in vba

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

Input X0, EPS, MAX_ITER

Calcola f(X0)

E’ vera almeno una delle seguenti affermazioni:

1) |X – X0| < EPS 2) Numero Iterazioni >

MAX_ITER

?

START

END

Calcola f’(X0)

Calcola

X = X0 – f(X0)/f’(X0) Incrementa di un’unità il Numero Iterazioni

Poni X0 = X

SI

NO

Diagrammi di FlussoL’algoritmo di Newton-Raphson

Il Calcolo del Tasso Interno di Rendimento

Page 95: Capitolo 2   elementi di programmazione in vba

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

Il calcolo del tasso interno di rendimento Valore attuale dei flussi

La funzione di cui occorre ricercare lo zero è quindi

NN

NN

1k

kN

1k

Nkk v100

v1

v1cvv100vcv100vcVA

NN

NN

1k

kN

1k

Nkk v100

v1

v1cvv100vcv100vcVA

Se le cedole sono costanti

dal calcolo della sommatoria (serie

geometrica)

Pv100v1

v1cvPvVAvf N

N

cN

)()( ,Pv100

v1

v1cvPvVAvf N

N

cN

)()( ,

Page 96: Capitolo 2   elementi di programmazione in vba

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

Con un po’ di pazienza si può calcolare anche la derivata di questa funzione rispetto a v

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

Il calcolo del tasso interno di rendimento

Pv100v1

v1cvvf N

N

)( Pv100v1

v1cvvf N

N

)(

1N

2

N1NN

Nv100v1

v1v1Nvcv

v1

v1c

dv

vdf

)()()(

1N

2

N1NN

Nv100v1

v1v1Nvcv

v1

v1c

dv

vdf

)()()(

Page 97: Capitolo 2   elementi di programmazione in vba

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

c = Val(txtCedola) ' valore della cedola m = Val(txtNumCedole) ' numero di cedole in corso Prezzo = Val(txtPrezzo) ' prezzo di mercato eps = Val(txtTolleranza) ' 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

Vengono letti i valori scritti nelle caselle di testo

Viene letto il calcolo desiderato attraverso la proprietà ListIndex

dell’oggetto Combo Box

Page 98: Capitolo 2   elementi di programmazione in vba

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

La Sintassi del VBA

Gestione delle Date

Page 99: Capitolo 2   elementi di programmazione in vba

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

Function IsBisestile(Data As Date) As Boolean

If (Year(Date) Mod 100 <> 0 And Year(Date) Mod 4 = 0) Or _

(Year(Date) Mod 100 = 0 And Year(Date) Mod 400 = 0) Then

IsBisestile = True

Else

IsBisestile = False

End If

 

End Function

Page 100: Capitolo 2   elementi di programmazione in vba

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

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

Funzioni per la gestione delle date

Page 101: Capitolo 2   elementi di programmazione in vba

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

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.

Funzioni per la gestione delle date

Page 102: Capitolo 2   elementi di programmazione in vba

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

Weekday(). Questa funzione permette di ottenere un numero di tipo

Integer che indica il giorno della settimana relativo alla data ricevuta in input. I giorni vengono rappresentati secondo il valore della tabella sottostante dove sono indicate le relative costanti

Giorno Costante VBA Domenica vbSunday Lunedì vbMonday Martedì vbTuesday Mercoledì vbWednesday Giovedì vbThursday Venerdì vbFriday Sabato vbSaturday

Funzioni per la gestione delle date

Page 103: Capitolo 2   elementi di programmazione in vba

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

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.

Funzioni per la gestione delle date

Page 104: Capitolo 2   elementi di programmazione in vba

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

La funzione DateAdd consente di aggiungere o sottrarre da una data un

intervallo di tempo specificato. È, ad esempio, possibile utilizzare DateAdd per

determinare la data risultante dall'aggiunta di 30 giorni alla data odierna oppure

l'orario risultante dall'aggiunta di 45 minuti all'ora corrente.

Per aggiungere giorni a date, è possibile utilizzare l'impostazione per il giorno

dell'anno ("y"), per il giorno ("d") o per il giorno della settimana ("w").

La funzione DateAdd non restituisce una data non valida. In questo esempio,

alla data 31 gennaio viene aggiunto un mese:

 

DateAdd("m", 1, "31-gen-95")

 

In questo caso, DateAdd restituirà 28-feb-95 e non 31-feb-95. Se date è 31-gen-

96, la funzione restituirà 29-feb-96, in quanto il 1996 è un anno bisestile.

Funzioni per la gestione delle date

Page 105: Capitolo 2   elementi di programmazione in vba

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

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.

Funzioni per la gestione delle date

Page 106: Capitolo 2   elementi di programmazione in vba

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

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.

Funzioni per la gestione delle date

Page 107: Capitolo 2   elementi di programmazione in vba

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

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.

Funzioni per la gestione delle date

Page 108: Capitolo 2   elementi di programmazione in vba

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

Page 109: Capitolo 2   elementi di programmazione in vba

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

Page 110: Capitolo 2   elementi di programmazione in vba

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

Page 111: Capitolo 2   elementi di programmazione in vba

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

Page 112: Capitolo 2   elementi di programmazione in vba

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

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.

22 e2024 .sin 22 e2024 .sin

Page 113: Capitolo 2   elementi di programmazione in vba

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

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

Page 114: Capitolo 2   elementi di programmazione in vba

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALECORSO 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 Size Bytes Class

a 1x1 8 double array

ans 1x1 8 double array

b 1x1 8 double array

Grand total is 3 elements using 24 bytes

Page 115: Capitolo 2   elementi di programmazione in vba

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

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.

Page 116: Capitolo 2   elementi di programmazione in vba

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

Page 117: Capitolo 2   elementi di programmazione in vba

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

Una funzione fondamentale! help

per vedere la lista dei toolboxes installati

help nome_toolbox per vedere la lista dei comandi installati in un toolbox

help nome_comando guida ‘on-line’ di MATLAB sullo specifico comando

ver info sulla versione di MATLAB

helpwin finestra di help di MATLAB

Page 118: Capitolo 2   elementi di programmazione in vba

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

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

43

21A

Indici (riga e colonna)dell’elemento di interesse

Page 119: Capitolo 2   elementi di programmazione in vba

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

Page 120: Capitolo 2   elementi di programmazione in vba

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALECORSO 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 4 5 6

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

Indici della sottomatrice di interesse

Sottomatrice di interesse

Page 121: Capitolo 2   elementi di programmazione in vba

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALECORSO 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 ans = 6 8 10 12

» B-Aans = 4 4 4 4

» A*Bans = 19 22 43 50

» A^2ans = 7 10 15 22

Page 122: Capitolo 2   elementi di programmazione in vba

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALECORSO 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.*Bans = 5 12 21 32» A.^Bans = 1 64 2187 65536

Page 123: Capitolo 2   elementi di programmazione in vba

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALECORSO 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.0000 1.5000 -0.5000

Matrice trasposta:» A'ans = 1 3 2 4

Page 124: Capitolo 2   elementi di programmazione in vba

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

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

Page 125: Capitolo 2   elementi di programmazione in vba

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

Alcune matrici “speciali”

eye(n,n) matrice identita’ nxn;

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.

Page 126: Capitolo 2   elementi di programmazione in vba

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

Page 127: Capitolo 2   elementi di programmazione in vba

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

Definizione di vettori (1) » v=(0:10)

v =

0 1 2 3 4 5 6 7 8 9 10

» v=(1:0.5:3)

v =

1.0000 1.5000 2.0000 2.5000 3.0000

Valore iniziale

Valore finale

Passo

Page 128: Capitolo 2   elementi di programmazione in vba

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

Definizione di vettori

Come matrici riga o colonna:» v = [ 3 6 1 7 ]v = 3 6 1 7

Polinomi: sono rappresentati come vettori.Es.:

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

3 2 12s s

Page 129: Capitolo 2   elementi di programmazione in vba

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

Page 130: Capitolo 2   elementi di programmazione in vba

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

Page 131: Capitolo 2   elementi di programmazione in vba

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

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

File .m e functions

Page 132: Capitolo 2   elementi di programmazione in vba

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

Page 133: Capitolo 2   elementi di programmazione in vba

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

Page 134: Capitolo 2   elementi di programmazione in vba

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

Page 135: Capitolo 2   elementi di programmazione in vba

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

Page 136: Capitolo 2   elementi di programmazione in vba

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

Page 137: Capitolo 2   elementi di programmazione in vba

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

Page 138: Capitolo 2   elementi di programmazione in vba

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

Page 139: Capitolo 2   elementi di programmazione in vba

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

Page 140: Capitolo 2   elementi di programmazione in vba

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

Page 141: Capitolo 2   elementi di programmazione in vba

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

putmatrixpermette di inviare a Matlabil contenuto di una matrice

getmatrixtrasferisce da Matlab versoExcel il contenuto di una matrice

evalstringesegue il comando matlab corrispondente alla stringa passata come parametro

Page 142: Capitolo 2   elementi di programmazione in vba

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

Page 143: Capitolo 2   elementi di programmazione in vba

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

Page 144: Capitolo 2   elementi di programmazione in vba

CORSO DI LAUREA IN SCIENZE DI INTERNET – LEZIONI DI FINANZA COMPUTAZIONALECORSO 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 Evaluate MATLAB command given Excel data. matlabsub 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.

Page 145: Capitolo 2   elementi di programmazione in vba

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

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.

Excel Linker

Page 146: Capitolo 2   elementi di programmazione in vba

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

Esempio ProgrammazioneVBA + MATLAB con Excel Link

Esempio ProgrammazioneVBA + MATLAB con Excel Link

Semplici Calcoli Finanziari Semplici Calcoli Finanziari