Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel...

113
Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic per Excel Giovanni Della Lunga

Transcript of Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel...

Page 1: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

1

Modelli Finanziari nel Tempo Continuo

1

Elementi di Programmazione in Visual Basic per Excel

Giovanni Della Lunga

Page 2: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

2

Lavorare in Ambiente MS Excel Le Macro di Excel L’ambiente di Sviluppo del VBA La Sintassi del VBA

Tipi di Dato e Operatori Istruzioni di Controllo Strutture Dati Procedure

Gestire l’Interazione con Excel Funzioni Speciali

Lavorare in Ambiente MS Excel Le Macro di Excel L’ambiente di Sviluppo del VBA La Sintassi del VBA

Tipi di Dato e Operatori Istruzioni di Controllo Strutture Dati Procedure

Gestire l’Interazione con Excel Funzioni Speciali

Elementi di Programmazione in Visual Basic per Excel

Page 3: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

3

Lavorare in Ambiente MS Excel Dopo aver avviato Windows è possibile avviare EXCEL in vari

modi: Fare clic sul pulsante Avvio, quindi scegliere Programmi e cliccare su

Microsoft® Excel. Fare clic sulla relativa icona della Barra degli strumenti Office. Fare doppio clic su una icona di cartella ottenuta precedentemente. Per avviarlo in modo automatico ad ogni avvio del computer:

Scegliere Impostazioni dal menu Avvio di Windows, quindi fare clic su Barra delle applicazioni, sulla scheda Applicazioni del menu Avvio e quindi su Aggiungi.

Poi fare clic su Sfoglia e nell'elenco delle cartelle fare doppio clic sulle cartelle finché verrà aperta la cartella contenente il file di collegamento a Microsoft® Excel.

Infine fare clic su Avanti, specificare il nome da assegnare al collegamento digitare il nome del collegamento, ad esempio Microsoft® Excel, quindi fare clic su Fine.

Dopo aver avviato Windows è possibile avviare EXCEL in vari modi:

Fare clic sul pulsante Avvio, quindi scegliere Programmi e cliccare su Microsoft® Excel.

Fare clic sulla relativa icona della Barra degli strumenti Office. Fare doppio clic su una icona di cartella ottenuta precedentemente. Per avviarlo in modo automatico ad ogni avvio del computer:

Scegliere Impostazioni dal menu Avvio di Windows, quindi fare clic su Barra delle applicazioni, sulla scheda Applicazioni del menu Avvio e quindi su Aggiungi.

Poi fare clic su Sfoglia e nell'elenco delle cartelle fare doppio clic sulle cartelle finché verrà aperta la cartella contenente il file di collegamento a Microsoft® Excel.

Infine fare clic su Avanti, specificare il nome da assegnare al collegamento digitare il nome del collegamento, ad esempio Microsoft® Excel, quindi fare clic su Fine.

Page 4: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

4

Lavorare in Ambiente MS Excel

All’avvio di EXCEL sarà visualizzata una nuova Cartella vuota. Graficamente possono essere distinte, dall’alto in basso, le

seguenti aree: La Barra dei Menu, dai quali sono selezionabili i comandi Le Barre degli Strumenti, che contengono una serie di pulsanti

selezionabili tramite mouse e consentono d'accedere rapidamente ai comandi di frequente utilizzo.

La Barra del Titolo della finestra attiva. L’Area di Lavoro suddivisa in righe e colonne. Le Barre di Scorrimento, orizzontale e verticale, che permettono di

visualizzare varie parti del foglio di lavoro non contenute nello schermo.

La Barra contenente le schede dei fogli. La Barra di Stato, nella quale sono riportate le informazioni relative al

documento attivo, o al comando evidenziato.

All’avvio di EXCEL sarà visualizzata una nuova Cartella vuota. Graficamente possono essere distinte, dall’alto in basso, le

seguenti aree: La Barra dei Menu, dai quali sono selezionabili i comandi Le Barre degli Strumenti, che contengono una serie di pulsanti

selezionabili tramite mouse e consentono d'accedere rapidamente ai comandi di frequente utilizzo.

La Barra del Titolo della finestra attiva. L’Area di Lavoro suddivisa in righe e colonne. Le Barre di Scorrimento, orizzontale e verticale, che permettono di

visualizzare varie parti del foglio di lavoro non contenute nello schermo.

La Barra contenente le schede dei fogli. La Barra di Stato, nella quale sono riportate le informazioni relative al

documento attivo, o al comando evidenziato.

Page 5: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

5

Lavorare in Ambiente MS Excel

Standard

Formattazione

Barra di scorrimento orizzontale

Barra di scorrimento verticale

Area di lavoro

Barra del titolo

Barra dei menu foglio di lavoro

Page 6: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

6

Lavorare in Ambiente MS Excel

In Microsoft Excel I file vengono denominati Cartelle (Workbooks). Le cartelle di lavoro possono essere costituite da più

fogli di lavoro (Worksheets) e fogli grafici (Charts). Collettivamente i fogli di lavoro e i fogli grafici

vengono indicati con il termine Sheets. In una cartella di lavoro attivare fogli differenti

selezionando con il mouse le linguette dei fogli poste nella parte inferiore di ciascun foglio. Tali linguette

vengono definite schede.

In Microsoft Excel I file vengono denominati Cartelle (Workbooks). Le cartelle di lavoro possono essere costituite da più

fogli di lavoro (Worksheets) e fogli grafici (Charts). Collettivamente i fogli di lavoro e i fogli grafici

vengono indicati con il termine Sheets. In una cartella di lavoro attivare fogli differenti

selezionando con il mouse le linguette dei fogli poste nella parte inferiore di ciascun foglio. Tali linguette

vengono definite schede.

Page 7: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

7

Lavorare in Ambiente MS Excel

In Microsoft Excel Il foglio correntemente selezionato viene definito

Activeworksheet Un foglio di lavoro è costituito da righe (identificate da numeri)

e da colonne (identificate da lettere).

Le lettere di colonna vanno da A a IV. I numeri di riga vanno da

1 a 65536

L’intersezione di una riga e di una colonna individua una cella.

L'insieme delle celle è indicato con il termine cells

Una cella si indica: cells (“A1”) = cells (1,1)

In Microsoft Excel Il foglio correntemente selezionato viene definito

Activeworksheet Un foglio di lavoro è costituito da righe (identificate da numeri)

e da colonne (identificate da lettere).

Le lettere di colonna vanno da A a IV. I numeri di riga vanno da

1 a 65536

L’intersezione di una riga e di una colonna individua una cella.

L'insieme delle celle è indicato con il termine cells

Una cella si indica: cells (“A1”) = cells (1,1)

Page 8: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

8

Lavorare in Ambiente MS Excel

Cartelle Fogli Grafici Altri oggetti

Cartelle Fogli Grafici Altri oggetti

Page 9: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

9

Lavorare in Ambiente MS Excel

Azione Operazione

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

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

Selezionare un foglio di lavoro Fare clic sulla scheda relativa

Selezionare una cella Fare clic sulla cella

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

Assegnare un nome ad un intervallo di celle

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

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

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

Page 10: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

10

Lavorare in Ambiente MS Excel

Inserire dati nelle celle e nella barra della formula Per inserire un dato in una cella è sufficiente selezionare la

cella e digitare. Durante la digitazione il dato appare sia all’interno della cella che nella barra della formula.

Inserire dati nelle celle e nella barra della formula Per inserire un dato in una cella è sufficiente selezionare la

cella e digitare. Durante la digitazione il dato appare sia all’interno della cella che nella barra della formula.

Elenco Funzioni

Inserisci Funzione

Page 11: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

11

Lavorare in Ambiente MS Excel

Tipi di file Cartelle di lavoro – XLS

Modello – XLT

Una cartella di lavoro creata al fine di utilizzarla come base per altre

cartelle di lavoro simili. È possibile creare modelli per le cartelle di

lavoro e per i fogli di lavoro. Il modello predefinito per le cartelle di

lavoro è denominato Cartel.xlt. Il modello predefinito per i fogli di

lavoro è denominato Foglio.xlt.

Componenti aggiuntive - XLA

Applicazione supplementare che amplia le funzionalità dei programmi

di Microsoft Office aggiungendo comandi personalizzati e

caratteristiche specializzate.

Page 12: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

12

Lavorare in Ambiente MS Excel Le Macro di Excel L’ambiente di Sviluppo del VBA La Sintassi del VBA

Tipi di Dato e Operatori Istruzioni di Controllo Strutture Dati Procedure

Gestire l’Interazione con Excel Funzioni Speciali

Lavorare in Ambiente MS Excel Le Macro di Excel L’ambiente di Sviluppo del VBA La Sintassi del VBA

Tipi di Dato e Operatori Istruzioni di Controllo Strutture Dati Procedure

Gestire l’Interazione con Excel Funzioni Speciali

Elementi di Programmazione in Visual Basic per Excel

Page 13: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

13

Le Macro di Excel

La costruzione e l'organizzazione di strutture dati non banali tramite Excel può comportare l'esecuzione da parte dell'utente di una discreta mole di operazioni, spesso ripetitive.

In questi casi può essere estremamente utile ricorrere al registratore di macro che permette di memorizzare una sequenza di operazioni al fine di poterle successivamente ripetere a richiesta.

Il registratore macro di Excel memorizza le operazioni eseguite dall’utente registrando gli equivalenti comandi sotto forma di istruzioni in linguaggio Visual Basic.

per questo motivo il registratore di macro oltre ad essere un utilissimo aiuto nella normale operatività con Excel costituisce anche un formidabile strumento didattico per cominciare a muoversi con la sintassi VBA.

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.

Page 14: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

14

Le Macro di Excel

Page 15: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

15

Le Macro di Excel

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

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

Page 16: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

16

Lavorare in Ambiente MS Excel Le Macro di Excel L’ambiente di Sviluppo del VBA La Sintassi del VBA

Tipi di Dato e Operatori Istruzioni di Controllo Strutture Dati Procedure

Gestire l’Interazione con Excel Funzioni Speciali

Lavorare in Ambiente MS Excel Le Macro di Excel L’ambiente di Sviluppo del VBA La Sintassi del VBA

Tipi di Dato e Operatori Istruzioni di Controllo Strutture Dati Procedure

Gestire l’Interazione con Excel Funzioni Speciali

Elementi di Programmazione in Visual Basic per Excel

Page 17: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

17

L’Ambiente di Sviluppo del VBA

Il Visual Basic dispone di un ambiente di sviluppo integrato (IDE) attraverso il quale è possibile non solo modificare le macro ma scrivere interi programmi;

L’editor è composto da una serie di finestre tramite le quali controllare le varie fasi di sviluppo e test dell’applicazione;

Da Excel l’editor VBA può essere richiamato utilizzando la finestra VBA o premendo F11.

Page 18: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

18

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 19: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

19

Page 20: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

20

Page 21: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

21

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 22: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

22

Lavorare in Ambiente MS Excel Le Macro di Excel L’ambiente di Sviluppo del VBA La Sintassi del VBA

Tipi di Dato e Operatori Istruzioni di Controllo Strutture Dati Procedure

Gestire l’Interazione con Excel Funzioni Speciali

Lavorare in Ambiente MS Excel Le Macro di Excel L’ambiente di Sviluppo del VBA La Sintassi del VBA

Tipi di Dato e Operatori Istruzioni di Controllo Strutture Dati Procedure

Gestire l’Interazione con Excel Funzioni Speciali

Elementi di Programmazione in Visual Basic per Excel

Page 23: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

23

La Sintassi del VBA

Il Visual Basic deriva la sua sintassi dal vecchio linguaggio basic; Nel corso del tempo molte nuove strutture sintattiche sono state

aggiunte al linguaggio trasformandolo in qualcosa di molto diverso rispetto all’originale;

In questa parte vedremo la componente convenzionale del linguaggio cioè le istruzioni base per la gestione del flusso del programma, i principali tipi di dato gestiti e la costruzione di procedure;

Nella prossima sezione vedremo la parte più innovativa di questo linguaggio e cioè la componente di interazione con Excel realizzata tramite componenti di programmazione orientata agli oggetti.

Page 24: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

24

La Sintassi del VBA:

Tipi di Dato e Operatori

Anche Visual Basic, come tutti i linguaggi di programmazione, prevede l'uso delle variabili, mediante le quali è possibile memorizzare dei valori testuali o numerici in strutture a cui il programma può accedere grazie a un nome assegnato loro in fase di creazione.

Una variabile è detta locale quando è definita all'interno di una procedura;

La sua creazione avviene quando si fa riferimento ad essa per la prima volta, oppure quando è eseguita l'istruzione Dim, che presenta la seguente sintassi:

Dim <nome> [As <tipo>]

in cui <nome> rappresenta il nome da assegnare alla variabile.

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 25: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

25

La Sintassi del VBA:

Tipi di Dato e OperatoriTipo 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.

Page 26: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

26

La Sintassi del VBA:

Tipi di Dato e Operatori

Tipi Numerici Il Visual Basic fornisce per la gestione dei valori numerici varie possibilità che vanno

di volta in volta scelte in accordo con il genere di informazione che deve essere

memorizzata.

A prima vista potrebbe apparire più comodo impiegare tipi generici che vadano

bene per qualunque occasione come il Double ma in realtà è sconsigliabile per vari

motivi, soprattutto perché i tipi che supportano la parte decimale vengono elaborati

ad una velocità inferiore a quella dei tipi che non la gestiscono quali i tipi Integer

o Long.

Dim NumeroIntero as Integer

Dim NumeroReale as Single

NumeroIntero = 5

NumeroReale = 4.5

Tipi Numerici Il Visual Basic fornisce per la gestione dei valori numerici varie possibilità che vanno

di volta in volta scelte in accordo con il genere di informazione che deve essere

memorizzata.

A prima vista potrebbe apparire più comodo impiegare tipi generici che vadano

bene per qualunque occasione come il Double ma in realtà è sconsigliabile per vari

motivi, soprattutto perché i tipi che supportano la parte decimale vengono elaborati

ad una velocità inferiore a quella dei tipi che non la gestiscono quali i tipi Integer

o Long.

Dim NumeroIntero as Integer

Dim NumeroReale as Single

NumeroIntero = 5

NumeroReale = 4.5

Page 27: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

27

La Sintassi del VBA:

Tipi di Dato e Operatori

Tipo di dati in Excel:

Dati Numerici Dalle Impostazioni

internazionali nel pannello di controllo modificare

Per visualizzare i numeri in notazione scientifica ovvero 2.3 e non 2,3

Inoltre direttamente in excel (menu Formato, Celle) è possibile scegliere il tipo di notazione numerica.

Tipo di dati in Excel:

Dati Numerici Dalle Impostazioni

internazionali nel pannello di controllo modificare

Per visualizzare i numeri in notazione scientifica ovvero 2.3 e non 2,3

Inoltre direttamente in excel (menu Formato, Celle) è possibile scegliere il tipo di notazione numerica.

Page 28: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

28

La Sintassi del VBA:

Tipi di Dato e Operatori

Date Il VBA usa il tipo dati Date per memorizzare data e ora. Il tipo Date

utilizza 8 byte di memoria per ogni combinazione di data/ora. Per assegnare un valore ad una variabile di tipo Date mediante

un’istruzione, si deve ricorrere ad una sintassi particolare che prevede il racchiudere la data tra una coppia di caratteri #.

Per esempio il 31 dicembre 2005 può essere rappresentato come illustrato

Dim UltimoDellAnno as Date UltimoDellAnno = #31/12/2005#

Date Il VBA usa il tipo dati Date per memorizzare data e ora. Il tipo Date

utilizza 8 byte di memoria per ogni combinazione di data/ora. Per assegnare un valore ad una variabile di tipo Date mediante

un’istruzione, si deve ricorrere ad una sintassi particolare che prevede il racchiudere la data tra una coppia di caratteri #.

Per esempio il 31 dicembre 2005 può essere rappresentato come illustrato

Dim UltimoDellAnno as Date UltimoDellAnno = #31/12/2005#

Page 29: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

29

La Sintassi del VBA:

Tipi di Dato e Operatori

Stringhe Per memorizzare dati testuali quali nomi, indirizzi, annotazioni o

altro si ricorre al tipo String. Facendo seguire la parola chiave String da un asterisco e un

numero è possibile predeterminare una lunghezza per le stringhe in modo che il valore in esse inserito

se eccede la dimensione prevista venga troncato se è inferiore vengano automaticamente inseriti degli

spazi fino a raggiungere la lunghezza definita.

Dim Nome as String Nome = “Giovanni”

Stringhe Per memorizzare dati testuali quali nomi, indirizzi, annotazioni o

altro si ricorre al tipo String. Facendo seguire la parola chiave String da un asterisco e un

numero è possibile predeterminare una lunghezza per le stringhe in modo che il valore in esse inserito

se eccede la dimensione prevista venga troncato se è inferiore vengano automaticamente inseriti degli

spazi fino a raggiungere la lunghezza definita.

Dim Nome as String Nome = “Giovanni”

Page 30: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

30

La Sintassi del VBA:

Tipi di Dato e Operatori Operatori Matematici Gli operatori matematici sono quelli che indicano le principali

operazioni matematiche e sono: + : addizione

- : sottrazione

* : moltiplicazione

/ : divisione

\ : divisione con restituzione della sola parte intera

^ : elevazione a potenza

Sqr : radice quadrata

mod : resto di una divisione

Page 31: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

31

La Sintassi del VBA:

Tipi di Dato e Operatori

Operatore di Assegnazione L’operatore di assegnazione coincide graficamente con l’operatore di

confronto di uguaglianza. Ciò non causa generalmente nessuna

confusione nel programmatore che si abitua con una certa rapidità a

riconoscerli e distinguerli nel loro significato.

L’unico aspetto che lascia momentaneamente confusi chi non ha mai

avuto esperienze di sviluppo software è proprio il carattere uguale come

operatore di assegnazione in quanto si tende a considerare l’uguale

un’asserzione di uguaglianza fra il valore posto alla sua destra e quello

posto alla sua sinistra

INCREMENTO DI UNA VARIABILE : a = a + 1

Page 32: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

32

La Sintassi del VBA:

Tipi di Dato e Operatori

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 33: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

33

Istruzioni Condizionali

Esecuzione di Cicli

Determinati

Condizionali

La Sintassi del VBA:

Istruzioni di Controllo

Page 34: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

34

La Sintassi del VBA:

Istruzioni di Controllo La condizione IF

Il flusso delle istruzioni all'interno della procedura non è necessariamente rigidamente definito, ma può variare in base al verificarsi di alcune condizioni.

Il programma deve pertanto essere in grado di prendere delle decisioni. Come la quasi totalità dei linguaggi di programmazione, Visual Basic

prevede a tal fine la struttura If, caratterizzata dalla seguente sintassi:

If <condizione> Then

<istruzioni da eseguire se la condizione è vera>

[Else

<istruzioni da eseguire se la condizione è falsa>]

End If

La condizione IF

Il flusso delle istruzioni all'interno della procedura non è necessariamente rigidamente definito, ma può variare in base al verificarsi di alcune condizioni.

Il programma deve pertanto essere in grado di prendere delle decisioni. Come la quasi totalità dei linguaggi di programmazione, Visual Basic

prevede a tal fine la struttura If, caratterizzata dalla seguente sintassi:

If <condizione> Then

<istruzioni da eseguire se la condizione è vera>

[Else

<istruzioni da eseguire se la condizione è falsa>]

End If

Page 35: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

35

La Sintassi del VBA:

Istruzioni di Controllo

La condizione può essere rappresentata da pressoché qualsiasi

espressione booleana. Si ricorda che un'espressione è così detta se può assumere solo due valori

distinti, cioè vero o falso.

Se essa è verificata, l'interprete esegue il blocco di istruzioni indicato fra

le parole chiave Then e Else. In caso contrario, è eseguito il secondo

gruppo di comandi. Si noti che quest'ultimo può anche essere assente.

In tal caso, la parola chiave Else non va utilizzata e non è eseguito

alcun codice in caso di mancata verifica della condizione.

La frase End If delimita la struttura. Tutte le istruzioni che la seguono

sono eseguite in modo indipendente dal valore dell'espressione

booleana.

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.

Page 36: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

36

La Sintassi del VBA:

Istruzioni di Controllo

La struttura Select Case E’ possibile ricorrere ad una diversa struttura di controllo denominata Select Case, la

cui sintassi è la seguente:

Select Case <variabile>

Case <valore 1>:

<blocco istruzioni 1>

[Case <valore 2>:

<blocco istruzioni 2>]

..

[Case <valore n>:

<blocco istruzioni n>]

[Case Else:

<istruzioni da eseguire se tutti i confronti falliscono>]

End Select

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

Page 37: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

37

La Sintassi del VBA:

Istruzioni di Controllo

La struttura Select Case è adatta ad essere utilizzata

ogniqualvolta si desideri variare il flusso del programma in base al

risultato del confronto fra il valore di una variabile e uno o più dati

costanti.

Ognuno di essi deve essere preceduto dalla parola chiave Case e

seguito dai due punti, nonché dal gruppo di istruzioni da eseguire

quando il confronto ha esisto positivo.

Inoltre, è possibile utilizzare la clausola Case Else, che va

obbligatoriamente posta alla fine della struttura, per definire un

gruppo di istruzioni che deve essere eseguito solo se tutti i confronti

hanno ottenuto un esito negativo.

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.

Page 38: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

38

La Sintassi del VBA:

Istruzioni di Controllo Gli operatori logici elementari

Si ipotizzi di voler scrivere una struttura If per verificare se il valore di una variabile numerica intera, denominata n, appartiene all'intervallo compreso fra 10 e 100. È necessario valutare contemporaneamente due condizioni:

n deve essere maggiore di 10 E minore di 100

Per far sì che sia prodotta una stringa indicante l'esito del confronto, occorre digitare il seguente codice:

If Numero > 10 then

If Numero < 100 then

Testo = "Il numero è compreso fra 10 e 100"

Else

Testo = "Il numero non appartiene all'intervallo"

End if

End if

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

Page 39: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

39

La Sintassi del VBA:

Istruzioni di Controllo L'operatore And

Spesso si rivela necessario valutare la contemporanea validità di due o più condizioni.

È il caso dell'esempio precedente, in cui si desidera verificare se la variabile Numero contiene un valore maggiore di 10 e nel contempo minore di 100.

L'operatore And assolve questo compito, restituendo il valore logico True solo se le condizioni a cui è applicato sono contemporaneamente verificate. Il codice può pertanto essere riscritto come segue:

If (Numero > 10) AND (Numero < 100) Then

Testo = "Il numero è compreso fra 10 e 100"

Else

Testo = "Il numero non appartiene all'intervallo"

End if

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

L'operatore And

Spesso si rivela necessario valutare la contemporanea validità di due o più condizioni.

È il caso dell'esempio precedente, in cui si desidera verificare se la variabile Numero contiene un valore maggiore di 10 e nel contempo minore di 100.

L'operatore And assolve questo compito, restituendo il valore logico True solo se le condizioni a cui è applicato sono contemporaneamente verificate. Il codice può pertanto essere riscritto come segue:

If (Numero > 10) AND (Numero < 100) Then

Testo = "Il numero è compreso fra 10 e 100"

Else

Testo = "Il numero non appartiene all'intervallo"

End if

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

Page 40: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

40

La Sintassi del VBA:

Istruzioni di Controllo

L'operatore Or

A differenza del precedente, l'operatore Or restituisce il valore logico True se almeno una delle condizioni specificate è vera. Ad esempio, la condizione

(Numero = 5) OR (Numero > 11)

è verificata quando la variabile Numero assume un valore maggiore di 11 o uguale a 5.

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.

Page 41: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

41

La Sintassi del VBA:

Istruzioni di Controllo L'operatore Not

Un altro utile operatore logico è quello di negazione (Not). Come è facile dedurre, esso restituisce il valore True se la condizione a cui è

applicato non è verificata, mentre restituisce False in caso contrario. A titolo di esempio, si supponga di voler realizzare una struttura If in grado di

generare una stringa indicate se il valore della variabile Numero risulta contemporaneamente diverso da 5 e da 10. Il codice da digitare è il seguente:

If NOT ((Numero = 5) Or (Numero = 10)) Then Testo = "Il numero è diverso da 5 e

da 10" End if

Si noti la connessione con l’operatore And

If Numero <> 5 And Numero <> 10 Then Testo = "Il numero è diverso da 5 e

da 10" End if

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

Page 42: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

42

La Sintassi del VBA:

Istruzioni di Controllo Il ciclo For

Si supponga di voler realizzare un programma in grado di calcolare il fattoriale di un numero, ovvero il prodotto di tutti i valori interi positivi minori o uguali ad esso.

Gli strumenti illustrati fino a questo punto non si rivelano sufficienti a tal fine, in quanto è necessaria la capacità di ripetere per un numero variabile di volte l'operazione di moltiplicazione.

Si impone pertanto il ricorso alle strutture di iterazione. Nel caso dell'esempio, occorre applicare la moltiplicazione a tutti i numeri

naturali minori o uguali a quello di cui si desidera calcolare il fattoriale. Appare così evidente la necessità di disporre di una struttura in grado di

permettere la ripetizione di una porzione di codice per un numero finito di volte.

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.

Page 43: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

43

La Sintassi del VBA:

Istruzioni di Controllo

Si tratta della classica struttura For, che nel caso di Visual Basic è caratterizzata dalla

seguente sintassi:

For <contatore> = <inizio> To <fine> [Step <passo>]

<istruzione 1>

...

<istruzione n>

Next [<contatore>]

Dopo la parola chiave For è necessario far seguire una variabile intera, che funge da

contatore.

Il suo valore è incrementato ad ogni ripetizione di un numero di unità pari a quello

specificato dopo la parola chiave Step, fino al raggiungimento del valore finale;

questa condizione determina la fine delle iterazioni e il passaggio all'istruzione seguente la

parola riservata Next.

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.

Page 44: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

44

La Sintassi del VBA:

Istruzioni di Controllo Il ciclo While

Una diversa esigenza è quella soddisfatta dall'uso del ciclo While, che permette la ripetizione di un segmento di codice per tutto il tempo in cui una condizione risulta vera. La sua sintassi è la seguente:

While <condizione>

<istruzione 1>

<istruzione 2>

...

<istruzione n>

Wend

Le istruzioni comprese fra le parole chiave While e Wend sono ripetute per un numero di volte non stabilito rigidamente a priori, bensì dipendente dalle stesse istruzioni, che devono essere in grado di fare in modo che la condizione ad un certo punto smetta di verificarsi. In caso contrario, si incappa in un errore molto diffuso fra i programmatori alle prime armi, ovvero si crea ciò che è usualmente detto ciclo infinito..

Il ciclo While

Una diversa esigenza è quella soddisfatta dall'uso del ciclo While, che permette la ripetizione di un segmento di codice per tutto il tempo in cui una condizione risulta vera. La sua sintassi è la seguente:

While <condizione>

<istruzione 1>

<istruzione 2>

...

<istruzione n>

Wend

Le istruzioni comprese fra le parole chiave While e Wend sono ripetute per un numero di volte non stabilito rigidamente a priori, bensì dipendente dalle stesse istruzioni, che devono essere in grado di fare in modo che la condizione ad un certo punto smetta di verificarsi. In caso contrario, si incappa in un errore molto diffuso fra i programmatori alle prime armi, ovvero si crea ciò che è usualmente detto ciclo infinito..

Page 45: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

45

La Sintassi del VBA:

Istruzioni di Controllo Le parole chiave Do e Loop

Il ciclo While può anche essere descritto in modo più elegante per mezzo delle parole chiave Do e Loop. In questo caso la sintassi diventa:

Do While <condizione>

<istruzione 1>

<istruzione 2>

...

<istruzione n>

Loop

Il comportamento è analogo a quello visto in precedenza: le istruzioni contenute all'interno della struttura sono ripetute fintanto che la condizione indicata accanto alla parola While si verifica.

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.

Page 46: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

46

La Sintassi del VBA:

Istruzioni di Controllo

Il ciclo Do Until

Pressoché analogo è il ciclo Do Until, caratterizzato dalla seguente sintassi:

Do Until <condizione>

<istruzione 1>

<istruzione 2>

...

<istruzione n>

Loop

In questo caso, le iterazioni avvengono quando la condizione è falsa e terminano quando essa si avvera.

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.

Page 47: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

47

La Sintassi del VBA:

Strutture Dati

Una struttura dati può essere immaginata come una collezione di dati.

Tanto per chiarirsi le idee facciamo un esempio pratico. Chi di noi non ha mai utilizzato un’agenda telefonica? Essa è a tutti gli effetti una struttura di dati perché colleziona informazioni di varia natura. L’agenda è suddivisa in pagine ognuna delle quali può contenere dei dati come: nome, cognome, indirizzo, numero telefonico, etc.

L’utilità di una simile struttura sta nel fatto che abbiamo la possibilità di risalire alle particolari informazioni che ci interessano anche quando gli elementi al suo interno sono molto numerosi. Inoltre qualora se ne presentasse la necessità dobbiamo avere la possibilità di aggiornare dei dati già esistenti oppure di introdurne dei nuovi.

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 48: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

48

La Sintassi del VBA:

Strutture Dati

Fra le strutture più note ce ne sono due predefinite nella maggior

parte dei linguaggi di programmazione, le quali sono:

Array

Record

Gli Array sono strutture dati i cui elementi appartengono tutti allo

stesso tipo mentre un record può essere composto da elementi di

tipo diverso.

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.

Page 49: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

49

La Sintassi del VBA:

Strutture Dati

Gli array contengono dati omogenei, tipicamente si considerano array a una e due dimensioni ai quali ci riferiremo come di comune coi termini “vettore” e “matrice”. La dichiarazione di un vettore o di una matrice deve essere accompagnata dal numero di elementi.

Esempio:

Dim myVector(20) as Double Dim myMatrix(10,10) as Integer

Nel primo caso abbiamo definito un vettore che contiene numeri in doppia precisione di 20 elementi, nel secondo abbiamo una matrice 10 x 10 di interi.

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.

Page 50: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

50

La Sintassi del VBA:

Strutture Dati Descriviamo anche la sintassi in forma generica  

Dim NomeVariabile ([Indici]) [As Tipo]

 

La sezione indici ha la seguente sintassi

 

[minimo to] massimo [, [minimo to] massimo]

 

che cosa vuol dire? E’ semplice, prima di tutto ricordiamo che tutto quello che si trova tra parentesi quadre è opzionale, quindi è possibile dimensionare un vettore sia scrivendo

 

Dim myVector(20) As Double 

Sia scrivendo

 

Dim myVector(1 to 10) As Double

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 51: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

51

La Sintassi del VBA:

Strutture Dati

In maniera analoga entrambe le dichiarazioni sono valide 

Dim myMatrix(10,10) As Integer

Dim myMatrix(1 to 10, 1 to 10) As Integer

 

Notate che è richiesto solo il limite superiore; l’indicazione del valore minimo per l’indice è opzionale. Se si specifica solo il limite superiore il VBA numera gli elementi dell’array coerentemente con l’impostazione Option Base.

Questa è una direttiva al compilatore che specifica se si desidera che gli indici degli array partano da 0 o da 1. La sintassi è la seguente

 

Option Base 0 | 1

 

In mancanza di questa istruzione l’interprete VBA fa partire la numerazione degli array da 0.

In maniera analoga entrambe le dichiarazioni sono valide 

Dim myMatrix(10,10) As Integer

Dim myMatrix(1 to 10, 1 to 10) As Integer

 

Notate che è richiesto solo il limite superiore; l’indicazione del valore minimo per l’indice è opzionale. Se si specifica solo il limite superiore il VBA numera gli elementi dell’array coerentemente con l’impostazione Option Base.

Questa è una direttiva al compilatore che specifica se si desidera che gli indici degli array partano da 0 o da 1. La sintassi è la seguente

 

Option Base 0 | 1

 

In mancanza di questa istruzione l’interprete VBA fa partire la numerazione degli array da 0.

Page 52: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

52

La Sintassi del VBA:

Strutture Dati

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

Esempio:

a = myVector(5)

b = myMatrix(7,6)

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

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

Page 53: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

53

La Sintassi del VBA:

Strutture Dati

In maniera analoga, ogni volta che si intende attribuire un valore ad

un certo elemento di un array occorre specificare l’indice relativo.

Ad esempio

MyVector(7) = 8.9 

Quando esegue questa istruzione il Visual Basic copia il valore 8.9

nell’elemento del vettore indicato, sostituendone il contenuto

precedente.

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.

Page 54: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

54

La Sintassi del VBA:

Strutture Dati

Uno dei vantaggi principali dell’uso di array è la possibilità di utilizzare dei cicli per semplificare l’elaborazione dei diversi elementi che lo compongono. Ad esempio se vogliamo inizializzare a zero tutti gli elementi di un vettore di dimensione 10 possiamo semplicemente scrivere 

For i = 1 to 10

MyVector(i) = 0

Next

  

Uno dei vantaggi principali dell’uso di array è la possibilità di utilizzare dei cicli per semplificare l’elaborazione dei diversi elementi che lo compongono. Ad esempio se vogliamo inizializzare a zero tutti gli elementi di un vettore di dimensione 10 possiamo semplicemente scrivere 

For i = 1 to 10

MyVector(i) = 0

Next

  

Page 55: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

55

La Sintassi del VBA:

Strutture Dati

... Oppure possiamo costruire una matrice identità  

For i = 1 to MaxNrRighe

For j = 1 to MaxNrColonne

If j = i then

myMatrix(i, j) = 1

Else

myMatrix(i, j) = 0

End If

Next j

Next i

 

Si noti che quando si utilizzano cicli For nidificati può essere utile riportare l’indice del ciclo accanto all’istruzione Next che chiude il ciclo stesso (questa indicazione è opzionale).

Page 56: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

56

La Sintassi del VBA:

Strutture Dati

Array Statici e Dinamici Array di questo tipo vengono detti statici perché il numero di

elementi rimane costante in tutta la procedura.

Tuttavia vi sono molte situazioni in cui non è noto a priori il

numero di elementi da salvare in un dato vettore o matrice.

In questi casi il VBA ci viene in aiuto con un tipo particolare di

array, i cosiddetti array dinamici.

Queste strutture sono definite in modo da permettere alla

procedura di cambiarne la dimensione durante l’esecuzione del

programma.

Array Statici e Dinamici Array di questo tipo vengono detti statici perché il numero di

elementi rimane costante in tutta la procedura.

Tuttavia vi sono molte situazioni in cui non è noto a priori il

numero di elementi da salvare in un dato vettore o matrice.

In questi casi il VBA ci viene in aiuto con un tipo particolare di

array, i cosiddetti array dinamici.

Queste strutture sono definite in modo da permettere alla

procedura di cambiarne la dimensione durante l’esecuzione del

programma.

Page 57: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

57

La Sintassi del VBA:

Strutture Dati

Come abbiamo già accennato possono presentarsi delle situazioni in cui non è possibile o semplicemente non è conveniente fissare a priori il numero di elementi di un array cioè la sua dimensione.

L’uso di un array dinamico al posto di uno statico risolve questo problema in quanto un array dinamico può essere esteso o ridotto secondo le necessità.

Un array dinamico viene dichiarato tale facendo seguire il nome da una coppia di parentesi tonde vuote, ad esempio possiamo scrivere 

Dim Scadenze() As Date

Dim Flussi() As Currency

Dim Matrice() As Double

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

Page 58: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

58

La Sintassi del VBA:

Strutture Dati

Un array così dichiarato non può venire utilizzato prima di averne

stabilito almeno una volta le dimensioni. Questo si realizza tramite

l’istruzione ReDim

 

ReDim Scadenze(n) As Date

ReDim Flussi(n) As Currency

ReDim Matrice(m, m) As Double

  

Si noti che questo permette anche di dimensionare un array ad un

valore che sarà noto solo durante l’esecuzione di una procedura.

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.

Page 59: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

59

La Sintassi del VBA:

Strutture Dati

Ad esempio supponiamo di scrivere un programma che chieda in

input all’utente il numero di elementi da riservare per la

memorizzazione di una serie di dati, in questo caso indicando con n

la variabile letta dal programma potremmo scrivere

 Dim n As Integer

Dim Vettore() As Single

 

n = InputBox(“Inserire il numero di elementi”)

ReDim Vettore(1 To n) As Single

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

Page 60: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

60

La Sintassi del VBA:

Strutture Dati

E’ possibile anche ridimensionare un array preservandone il

contenuto. A tale scopo è necessario usare la clausola Preserve

che va posta subito dopo la parola chiave ReDim, ad esempio

 

ReDim Preserve Vettore(n) As Single

 

Nel caso di un array multidimensionale, tuttavia, quando si usa la

parola chiave Preserve si può modificare soltanto l’ultima

dimensione.

E’ possibile anche ridimensionare un array preservandone il

contenuto. A tale scopo è necessario usare la clausola Preserve

che va posta subito dopo la parola chiave ReDim, ad esempio

 

ReDim Preserve Vettore(n) As Single

 

Nel caso di un array multidimensionale, tuttavia, quando si usa la

parola chiave Preserve si può modificare soltanto l’ultima

dimensione.

Page 61: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

61

La Sintassi del VBA:

Strutture Dati

Per riuscire a tenere traccia delle dimenzioni di array siano essi statici o dinamici il VBA prevede due funzioni, LBound e UBound, che restituiscono il valore minimo e massimo per gli indici di un array. La sintassi generica per queste funzioni è 

LBound(NomeArray [, dimensione])

UBound(NomeArray [, dimensione]) 

dimensione è un numero intero che specifica per quale dimensione dell’array si vuole ottenere il limite minimo o massimo. Se non viene specificato VBA restituisce l’estremo relativo alla prima dimensione dell’array.

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.

Page 62: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

62

La Sintassi del VBA:

Strutture Dati

Spesso i dati possono essere aggregati in modo da avere variabili

che contengono al loro interno altre variabili.

Ad esempio possiamo definire una variabile Opzione che contiene

al suo interno gli attributi che caratterizzano questo tipo di oggetto.

L’istruzione Type serve a questo scopo

Type Opzione

Scadenza as Date

Strike as Double

Sottostante as Double

Sigma as Double

TassoRiskFree as Double

End Type

Spesso i dati possono essere aggregati in modo da avere variabili

che contengono al loro interno altre variabili.

Ad esempio possiamo definire una variabile Opzione che contiene

al suo interno gli attributi che caratterizzano questo tipo di oggetto.

L’istruzione Type serve a questo scopo

Type Opzione

Scadenza as Date

Strike as Double

Sottostante as Double

Sigma as Double

TassoRiskFree as Double

End Type

Si noti l’assenza dell’istruzione Dim a questo livello di definizione!

Page 63: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

63

La Sintassi del VBA:

Strutture Dati

Possiamo così dichiarare una nuova variabile, ad esempio

un’azione come un generico titolo

Dim OPT_ENEL_150305 As Opzione

E’ possibile accedere ai singoli attributi del titolo (campi) con

la seguente sintassi

ValoreSottostante = OPT_ENEL_150305.Sottostante

Possiamo così dichiarare una nuova variabile, ad esempio

un’azione come un generico titolo

Dim OPT_ENEL_150305 As Opzione

E’ possibile accedere ai singoli attributi del titolo (campi) con

la seguente sintassi

ValoreSottostante = OPT_ENEL_150305.Sottostante

Page 64: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

64

La Sintassi del VBA:

Strutture Dati With

L’istruzione With può essere applicata in vari contesti per migliorare la

leggibilità di istruzioni che operino sullo stesso oggetto.

Essa permette di riportare un’unica volta il nome dell’oggetto e sulle

righe successive abbreviare quest’ultimo con il carattere punto.

Esempio:

With OPT_ENEL_150305

ValoreSottostante = .Sottostante

Volatilita = .Sigma

Expiration = .Scadenza

End With

With

L’istruzione With può essere applicata in vari contesti per migliorare la

leggibilità di istruzioni che operino sullo stesso oggetto.

Essa permette di riportare un’unica volta il nome dell’oggetto e sulle

righe successive abbreviare quest’ultimo con il carattere punto.

Esempio:

With OPT_ENEL_150305

ValoreSottostante = .Sottostante

Volatilita = .Sigma

Expiration = .Scadenza

End With

Page 65: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

65

La Sintassi del VBA:

Procedure

Una procedura è una frazione di codice che esegue un

determinato compito il più possibile elementare;

Con Visual Basic è possibile creare due tipi di procedure:

procedure di tipo Sub (SUBROUTINE)

procedure di tipo Function. (FUNZIONI)

A differenza di altri linguaggi il Visual Basic distingue

nettamente queste due diverse tipologie di procedura;

Una procedura è una frazione di codice che esegue un

determinato compito il più possibile elementare;

Con Visual Basic è possibile creare due tipi di procedure:

procedure di tipo Sub (SUBROUTINE)

procedure di tipo Function. (FUNZIONI)

A differenza di altri linguaggi il Visual Basic distingue

nettamente queste due diverse tipologie di procedura;

Page 66: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

66

La Sintassi del VBA:

Procedure

Una procedura Sub (subroutine) è un’unità di codice racchiusa fra le istruzioni Sub … End Sub.

La procedura di tipo subroutine esegue un compito ma non restituisce alcun valore.

Esempio

Sub CalcolaQuadrato(x as Double, res as Double)

res = x * x

End Sub

Page 67: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

67

La Sintassi del VBA:

Procedure

Una procedura Function è un’unità di codice racchiusa fra le istruzioni Function e End Function.

Come una procedura Sub una procedura Function esegue un preciso compito. A differenza della procedura Sub tuttavia essa restituisce anche un valore.

Esempio

Function CalcolaQuadrato(x as Double) as Double

CalcolaQuadrato = x*x

End Function

Page 68: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

68

La Sintassi del VBA:

Procedure

Le funzioni e le subroutine possono prendere in

input dei parametri (detti argomenti della funzione).

Questi parametri sono dei valori che la funzione o la

subroutine riceve per la propria elaborazione e sono

indicati fra le parentesi tonde nella riga di

dichiarazione della funzione.

Page 69: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

69

La Sintassi del VBA:

Procedure Subroutine e Funzioni: La differenza

 

Public Sub ProceduraSub()

 MsgBox “Questa procedura è una subroutine”

End Sub

Public Function ProceduraFun() As String

ProceduraFun = “La procedura che ha generato _

questo risultato è una funzione”

End Function

 

Page 70: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

70

La Sintassi del VBA:

Procedure La sintassi dell’istruzione Sub è la seguente

[Private|Public|Friend][Static] Sub <Nome> [(elencoargomenti)]

[istruzioni]

[Exit Sub]

[istruzioni]End Sub

La sintassi dell'istruzione Sub è composta dalle seguenti parti:

Public (Facoltativa). Indica che la routine Sub è accessibile per tutte le altre routine in tutti i moduli. Se utilizzata in un modulo che include un'istruzione Option Private, la routine non sarà disponibile esternamente al progetto.

Private (Facoltativa). Indica che la routine Sub è accessibile solo per le altre routine incluse nel modulo in cui è stata dichiarata.

Static (Facoltativa). Indica che le variabili locali della routine Sub vengono conservate durante le chiamate. L'attributo Static non influisce sulle variabili dichiarate al di fuori della routine Sub, anche se vengono utilizzate nella routine stessa.

Nome (Obbligatoria). Nome della routine Sub, espresso in base alle convenzioni di denominazione standard delle variabili.

elencoargomenti (Facoltativa). Elenco delle variabili che rappresentano gli argomenti passati alla routine Sub , quando questa viene richiamata. Le variabili multiple sono separate da virgole.

istruzioni (Facoltativa). Qualsiasi gruppo di istruzioni da eseguire nel corpo della routine Sub.

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.

Page 71: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

71

La Sintassi del VBA:

Procedure

La sintassi generale per una funzione è leggermente più articolata di quella per una subroutine

 

[Public | Private] Function <Nome> ([Elenco Argomenti]) [As Tipo]

 

‘ Istruzioni VBA

 

Nome = Espressione

 

End Function

 

Ogni funzione inizia con la parola chiave Function seguita dal nome della procedura stessa, sopra indicato con Nome.

Dopo il nome della funzione abbiamo l’elenco degli argomenti della funzione racchiusi fra parentesi tonde. Se esistono degli argomenti questi vanno specificati all’interno delle parentesi tonde separati da virgole.

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.

Page 72: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

72

La Sintassi del VBA:

Procedure

Ritorno di valori da una procedura Function Di solito lo scopo di una funzione è quello di eseguire alcuni calcoli o delle

operazioni specifiche su un insieme di dati e di restituire il risultato di queste operazioni.

All’interno del corpo della funzione la riga 

Nome = Espressione 

rappresenta l’assegnamento della funzione. Perché una funzione restituisca un valore essa deve sempre includere un’istruzione

che assegni un valore al nome della funzione. Nella sintassi del Visual Basic questo si ottiene assegnando il valore che si vuole

restituire al programma chiamante ad una variabile fittizia che ha lo stesso nome della funzione ma che non viene dichiarata in alcun luogo.

Ritorno di valori da una procedura Function Di solito lo scopo di una funzione è quello di eseguire alcuni calcoli o delle

operazioni specifiche su un insieme di dati e di restituire il risultato di queste operazioni.

All’interno del corpo della funzione la riga 

Nome = Espressione 

rappresenta l’assegnamento della funzione. Perché una funzione restituisca un valore essa deve sempre includere un’istruzione

che assegni un valore al nome della funzione. Nella sintassi del Visual Basic questo si ottiene assegnando il valore che si vuole

restituire al programma chiamante ad una variabile fittizia che ha lo stesso nome della funzione ma che non viene dichiarata in alcun luogo.

Page 73: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

73

La Sintassi del VBA:

Funzioni di Interazione con l’Utente InputBox

La sintassi generale completa per la funzione InputBox è la seguente

InputBox(Messaggio [, Titolo, Default, XPos, YPos, FileAiuto, Contesto])

 

La variabile Messaggio è una qualsiasi espressione di tipo String ed è l’unico argomento obbligatorio per la funzione InputBox e serve per indicare all’utente quale informazione deve inserire, tutti gli altri argomenti sono opzionali (e come tali sono riportati fra parentesi quadre nella descrizione della sintassi).

Titolo è una variabile di tipo String che serve per definire il titolo della finestra di dialogo.

InputBox

La sintassi generale completa per la funzione InputBox è la seguente

InputBox(Messaggio [, Titolo, Default, XPos, YPos, FileAiuto, Contesto])

 

La variabile Messaggio è una qualsiasi espressione di tipo String ed è l’unico argomento obbligatorio per la funzione InputBox e serve per indicare all’utente quale informazione deve inserire, tutti gli altri argomenti sono opzionali (e come tali sono riportati fra parentesi quadre nella descrizione della sintassi).

Titolo è una variabile di tipo String che serve per definire il titolo della finestra di dialogo.

n = InputBox("Domanda", "Titolo", 0)

Page 74: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

74

La Sintassi del VBA:

Funzioni di Interazione con l’Utente MsgBox

La sintassi generale completa per la funzione MsgBox è la seguente 

MsgBox Messaggio [, Pulsanti, Titolo, FileAiuto, Contesto]

 

L’unico argomento obbligatorio per MsgBox è la variabile Messaggio che può essere una qualunque espressione, gli altri argomenti sono opzionali.

L’argomento Pulsanti è un’espressione numerica che specifica quanti e quali pulsanti appaiono nella finestra di dialogo di MsgBox. Questa variabile specifica anche il pulsante di default nella finestra e se la finestra contiene delle icone per i messaggi critici di informazione, di avviso o di richiesta di Windows.

MsgBox

La sintassi generale completa per la funzione MsgBox è la seguente 

MsgBox Messaggio [, Pulsanti, Titolo, FileAiuto, Contesto]

 

L’unico argomento obbligatorio per MsgBox è la variabile Messaggio che può essere una qualunque espressione, gli altri argomenti sono opzionali.

L’argomento Pulsanti è un’espressione numerica che specifica quanti e quali pulsanti appaiono nella finestra di dialogo di MsgBox. Questa variabile specifica anche il pulsante di default nella finestra e se la finestra contiene delle icone per i messaggi critici di informazione, di avviso o di richiesta di Windows.

MsgBox "Messaggio di Errore", vbCritical + vbYesNoCancel, "Titolo Finestra"

Page 75: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

75

La Sintassi del VBA:

Funzioni Definite dall’Utente

Le funzioni che utilizzano alcune restrizioni sulle proprie procedure di

calcolo vengono dette funzioni definite dall’utente e sono le uniche

procedure che Excel può utilizzare nelle formule contenute nelle celle

dei fogli di lavoro.

Una funzione definita dall’utente non può selezionare, inserire,

eliminare o cambiare formato a nessun dato contenuto in un foglio di

lavoro, inoltre essa non può aggiungere, eliminare o rinominare i fogli

e/o le cartelle di lavoro.

In altre parole le funzioni definite dall’utente possono soltanto eseguire

dei calcoli o delle manipolazioni su dati ricevuti attraverso l’elenco degli

argomenti o su dati recuperati dai fogli Excel.

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.

Page 76: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

76

La Sintassi del VBA:

Funzioni Definite dall’Utente

Parametri Opzionali Ci sono diverse circostanze in cui può essere utile scrivere una funzione in cui il

numero di parametri da richiedere all’utente non sia rigidamente prefissato. Nel caso delle funzioni predefinite del Visual Basic, ad esempio, questa

circostanza più che l’eccezione rappresenta quasi la regola. Pensiamo ad una funzione VBA nativa come InputBox che richiede in generale sette parametri ma che può essere richiamata con un solo parametro, il messaggio che compare nella finestra di dialogo, essendo gli altri sei opzionali.

Per creare parametri di questo tipo, ovverosia parametri che possono essere inseriti oppure omessi in relazione alle diverse esigenze, si utilizza la parola chiave Optional che va anteposta ad ognuno di essi nella dichiarazione della funzione.

Parametri Opzionali Ci sono diverse circostanze in cui può essere utile scrivere una funzione in cui il

numero di parametri da richiedere all’utente non sia rigidamente prefissato. Nel caso delle funzioni predefinite del Visual Basic, ad esempio, questa

circostanza più che l’eccezione rappresenta quasi la regola. Pensiamo ad una funzione VBA nativa come InputBox che richiede in generale sette parametri ma che può essere richiamata con un solo parametro, il messaggio che compare nella finestra di dialogo, essendo gli altri sei opzionali.

Per creare parametri di questo tipo, ovverosia parametri che possono essere inseriti oppure omessi in relazione alle diverse esigenze, si utilizza la parola chiave Optional che va anteposta ad ognuno di essi nella dichiarazione della funzione.

Function Test(x as Double, Optional y as Double [= 0])

Page 77: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

77

La Sintassi del VBA:

Funzioni Definite dall’Utente Option Pricing con Black & Scholes

Function D_1(S As Single, K As Single, T As Single, _ Sigma As Single, r As Single, _

Optional q As Single = 0) As Single

D_1 = (Log(S/K)+(r–q+0.5*Sigma*Sigma)*T)/(Sigma*Sqr(T))

End Function

T

TqrKS

d

2

1

21

ln

Valore di default

Page 78: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

78

La Sintassi del VBA:

Funzioni Definite dall’Utente Option Pricing con Black & Scholes

Function D_2(S As Single, K As Single, T As Single, _ Sigma As Single, r As Single, _

Optional q As Single = 0) As Single

D_2 = (Log(S/K)+(r–q-0.5*Sigma*Sigma)*T)/(Sigma*Sqr(T))

End Function

T

TqrKS

d

2

2

21

ln

Page 79: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

79

La Sintassi del VBA:

Funzioni Definite dall’Utente Option Pricing con Black & Scholes

Public Function BS(TipoOpzione As Integer, _ Sottostante As Double, _ Strike As Double, _ Scadenza As Double, _ Sigma As Double, _ TassoRiskFree As Double, _ Optional Tasso As Double = 0) As Double Dim d1 As Double Dim d2 As Double d1 = D_1(Sottostante, Strike, Scadenza, Sigma, TassoRiskFree, Tasso) d2 = D_2(Sottostante, Strike, Scadenza, Sigma, TassoRiskFree, Tasso)

Select Case TipoOpzione Case 1 ' opzione di tipo call BS = Sottostante * Exp(-Scadenza * Tasso) * Application.NormSDist(d1) _ - Strike * Exp(-Scadenza * TassoRiskFree) * Application.NormSDist(d2) Case -1 ' opzione di tipo put BS = -Sottostante * Exp(-Scadenza * Tasso) * Application.NormSDist(-d1) _ + Strike * Exp(-Scadenza * TassoRiskFree) * Application.NormSDist(-d2) End Select

End Function

)()(

)()(

21

21

dNKedNSep

dNKedNSecrTqT

rTqT

Page 80: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

80

La Sintassi del VBA:

Funzioni Definite dall’Utente Application.Worksheetfunction

Si noti che da VBA tramite l’oggetto Application è possibile utilizzare tutte le funzioni di Excel!

Nell’esempio abbiamo utilizzato la funzione che calcola la distribuzione cumulata della normale standard

BS = Sottostante * Exp(-Scadenza * Tasso) * Application.NormSDist(d1) _ - Strike * Exp(-Scadenza * TassoRiskFree) * Application.NormSDist(d2)

Page 81: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

81

Lavorare in Ambiente MS Excel Le Macro di Excel L’ambiente di Sviluppo del VBA La Sintassi del VBA

Tipi di Dato e Operatori Istruzioni di Controllo Strutture Dati Procedure

Gestire l’Interazione con Excel Funzioni Speciali

Lavorare in Ambiente MS Excel Le Macro di Excel L’ambiente di Sviluppo del VBA La Sintassi del VBA

Tipi di Dato e Operatori Istruzioni di Controllo Strutture Dati Procedure

Gestire l’Interazione con Excel Funzioni Speciali

Elementi di Programmazione in Visual Basic per Excel

Page 82: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

82

Gestire l’Interazione con Excel

Le caratteristiche sintattiche del VBA viste fino a questo punto riguardano tecniche di programmazione convenzionale;

Il punto realmente innovativo del VBA consiste nella possibilità di interagire dinamicamente con i dati presenti nei foglio Excel

Un’applicazione VBA per Excel si caratterizza quindi a livello progettuale distinguendo chiaramente tre fasi

INPUT – in questa fase si raccolgono i dati necessari all’elaborazione da uno o più fogli Excel, eventualmente si possono raccogliere altri dati utilizzando la funzione InputBox o appositi form costruiti dall’utente (vedi oltre);

ELABORAZIONE – questa è la parte di calcolo convenzionale all’interno della quale possono essere presenti anche procedure di elaborazione dati realizzate in altri linguaggi (es. C/C++) al fine di ottimizzare i tempi di elaborazione;

OUTPUT – Il risultato del calcolo solitamente viene riportato nelle celle del foglio di lavoro ed eventualmente riportato in grafico.

Le caratteristiche sintattiche del VBA viste fino a questo punto riguardano tecniche di programmazione convenzionale;

Il punto realmente innovativo del VBA consiste nella possibilità di interagire dinamicamente con i dati presenti nei foglio Excel

Un’applicazione VBA per Excel si caratterizza quindi a livello progettuale distinguendo chiaramente tre fasi

INPUT – in questa fase si raccolgono i dati necessari all’elaborazione da uno o più fogli Excel, eventualmente si possono raccogliere altri dati utilizzando la funzione InputBox o appositi form costruiti dall’utente (vedi oltre);

ELABORAZIONE – questa è la parte di calcolo convenzionale all’interno della quale possono essere presenti anche procedure di elaborazione dati realizzate in altri linguaggi (es. C/C++) al fine di ottimizzare i tempi di elaborazione;

OUTPUT – Il risultato del calcolo solitamente viene riportato nelle celle del foglio di lavoro ed eventualmente riportato in grafico.

Page 83: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

83

Gestire l’Interazione con Excel

Oggetti di ExcelOggetti di Excel

Organizzazione Gerarchica

Gli oggetti sono raggruppati in collezioni

Gli oggetti hanno proprietà specifiche

Gli oggetti hanno metodi specifici

Page 84: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

84

Gestire l’Interazione con Excel

Gli oggetti di Excel (così come quelli delle altre applicazioni Microsoft

Office) sono raggruppati in classi organizzate in modo gerarchico. Ogni

classe di oggetti a sua volta può contenere una o più sottoclassi.

La gerarchia vede al livello più alto l’oggetto Application che

rappresenta l’applicazione stessa.

E’ facile rendersi conto che all’interno dell’applicazione molti oggetti

sono dello stesso tipo essendo distinti solo da un nome univoco o da

un indice di riferimento; si pensi ad esempio ai vari fogli che

compaiono all’interno di una cartella di lavoro. Questi oggetti formano

una collezione o insieme di oggetti.

Gli oggetti di Excel (così come quelli delle altre applicazioni Microsoft

Office) sono raggruppati in classi organizzate in modo gerarchico. Ogni

classe di oggetti a sua volta può contenere una o più sottoclassi.

La gerarchia vede al livello più alto l’oggetto Application che

rappresenta l’applicazione stessa.

E’ facile rendersi conto che all’interno dell’applicazione molti oggetti

sono dello stesso tipo essendo distinti solo da un nome univoco o da

un indice di riferimento; si pensi ad esempio ai vari fogli che

compaiono all’interno di una cartella di lavoro. Questi oggetti formano

una collezione o insieme di oggetti.

Page 85: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

85

Gestire l’Interazione con Excel

Gerarchie, Nomi e Collezioni

Application.Workbooks(“Esempi.xls”).Worksheets(“Foglio1”).Range(“S0”)

Se siamo nel file Esempi.xls...

Worksheets(“Foglio1”).Range(“S0”)

Se siamo nel foglio 1...

Range(“S0”)

Gerarchie, Nomi e Collezioni

Application.Workbooks(“Esempi.xls”).Worksheets(“Foglio1”).Range(“S0”)

Se siamo nel file Esempi.xls...

Worksheets(“Foglio1”).Range(“S0”)

Se siamo nel foglio 1...

Range(“S0”)

Page 86: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

86

Gestire l’Interazione con Excel

Le collezioni sono sempre individuate da nomi al plurale. Ad esempio in

Excel l’insieme Workbooks rappresenta tutte le cartelle di lavoro

correntemente aperte. All’interno di ogni oggetto Workbook è

disponibile un insieme di oggetti Worksheet (i fogli di lavoro), tale

insieme è identificato dal nome Worksheets. Tutti gli insiemi in Microsoft Office consentono di accedere a ciascun elemento

nell’insieme oltre che al numero di oggetti dell’insieme.

Per accedere ad un singolo oggetto in un insieme in Visual Basic è sufficiente

digitare il nome dell’insieme seguito dal valore di un indice univoco di riferimento

(che può essere un nome o un numero) compreso fra parentesi tonde.

Ad esempio se intendiamo riferirci al foglio denominato “Foglio1” di una

generica cartella di lavoro, possiamo utilizzare l’insieme Worksheets con la

seguente sintassi: Worksheets(“Foglio1”) oppure Worksheets(1).

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

Page 87: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

87

Gestire l’Interazione con Excel

Ogni oggetto Microsoft Office può contenere proprietà, metodi o eventi. Una proprietà è un attributo caratteristico che definisce o descrive un oggetto, come la

dimensione di una cella, la posizione di una finestra di dialogo o la sua forma.

I metodi (come abbiamo già detto) sono azioni che è possibile eseguire sull’oggetto o

tramite esso. Ad esempio sono metodi della cartella il salvataggio su disco, l’eliminazione di

dati la chiusura della cartella stessa.

Gli eventi sono frammenti di codice che vengono eseguiti in corrispondenza di eventi

intercettati dal sistema operativo (es. click sul mouse).

 

Nella maggior parte dei casi è possibile ottenere il valore di una proprietà e/o

importarla con un determinato valore (tuttavia esistono anche proprietà di sola

lettura). Per impostare una proprietà se ne definisce il valore tramite l’operatore di assegnazione.

Per ottenere il valore di una proprietà è sufficiente specificare la proprietà e, nella maggior

parte dei casi, assegnarla ad una variabile temporanea.

Ogni oggetto Microsoft Office può contenere proprietà, metodi o eventi. Una proprietà è un attributo caratteristico che definisce o descrive un oggetto, come la

dimensione di una cella, la posizione di una finestra di dialogo o la sua forma.

I metodi (come abbiamo già detto) sono azioni che è possibile eseguire sull’oggetto o

tramite esso. Ad esempio sono metodi della cartella il salvataggio su disco, l’eliminazione di

dati la chiusura della cartella stessa.

Gli eventi sono frammenti di codice che vengono eseguiti in corrispondenza di eventi

intercettati dal sistema operativo (es. click sul mouse).

 

Nella maggior parte dei casi è possibile ottenere il valore di una proprietà e/o

importarla con un determinato valore (tuttavia esistono anche proprietà di sola

lettura). Per impostare una proprietà se ne definisce il valore tramite l’operatore di assegnazione.

Per ottenere il valore di una proprietà è sufficiente specificare la proprietà e, nella maggior

parte dei casi, assegnarla ad una variabile temporanea.

Page 88: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

88

Gestire l’Interazione con Excel

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

 

Oggetto.Identificatore 

dove Oggetto è un qualsiasi riferimento valido ad un oggetto e Identificatore è un qualsiasi nome valido di una proprietà

o di un metodo.

Notate che un punto (.) separa il riferimento all’oggetto dal nome della proprietà o del metodo.

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

 

Oggetto.Identificatore 

dove Oggetto è un qualsiasi riferimento valido ad un oggetto e Identificatore è un qualsiasi nome valido di una proprietà

o di un metodo.

Notate che un punto (.) separa il riferimento all’oggetto dal nome della proprietà o del metodo.

Page 89: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

89

Gestire l’Interazione con Excel

Durante la scrittura del codice ogni volta che desiderate invocare una proprietà o un metodo il VBA visualizza accanto al punto una finestra in cui compaiono i nomi delle proprietà e dei metodi dell’oggetto corrente.

I metodi vengono identificati da un blocchetto verde mentre le proprietà sono indicate da un’icona a forma di lista con un indice che punta ad un elemento.

Page 90: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

90

Gestire l’Interazione con Excel

Pulsanti di Comando I pulsanti di comando non solo possono attivare un evento

quando vi si preme sopra con il mouse ma rispondono anche ad altri eventi come ad esempio il semplice spostamento del mouse sopra il pulsante.

Dato che i pulsanti di comando possono rispondere ad un complesso sistema di eventi (questa come vedremo è la regola piuttosto che l’eccezione per tutti i comandi) è necessario un modo completamente nuovo per collegare una macro ad un pulsante.

Questo nuovo approccio utilizza quelle che vengono chiamate routine di gestione degli eventi.

Queste routine sono speciali macro, collegate ad un oggetto,

per esempio ad un pulsante di comando.

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.

Page 91: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

91

Gestire l’Interazione con Excel

Finestra Proprietà di un Pulsante di Comando

Page 92: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

92

Gestire l’Interazione con Excel

Macro Gestione Evento Associata ad un Pulsante di Comando

Page 93: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

93

Gestire l’Interazione con Excel

La scatola degli attrezzi

Page 94: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

94

Gestire l’Interazione con Excel Range

Gli oggetti Range sono probabilmente la classe di oggetti più importante di Excel.

Negli intervalli, cioè nei Range, si inseriscono i valori, le formule. Intervalli di valori sono alla base della produzione di report e grafici. Le tabelle pivot vengono manipolate mediante intervalli.

Excel possiede tre proprietà che vedono un intervallo come se fosse una collezione di oggetti:

la proprietà Cells (che restituisce un insieme di celle); la proprietà Rows (restituisce un insieme di righe); la proprietà Columns (restituisce un insieme di colonne);

Queste non sono comunque classi separate in quanto il tipo di dato di una qualunque di queste proprietà è sempre un oggetto Range.

L’identificazione di una singola cella può avvenire indicandone il numero di riga e il numero di colonna come se si trattasse del singolo elemento di una matrice corrispondente all’intero foglio di lavoro.

Range Gli oggetti Range sono probabilmente la classe di oggetti più importante di

Excel. Negli intervalli, cioè nei Range, si inseriscono i valori, le formule. Intervalli di valori sono alla base della produzione di report e grafici. Le tabelle pivot vengono manipolate mediante intervalli.

Excel possiede tre proprietà che vedono un intervallo come se fosse una collezione di oggetti:

la proprietà Cells (che restituisce un insieme di celle); la proprietà Rows (restituisce un insieme di righe); la proprietà Columns (restituisce un insieme di colonne);

Queste non sono comunque classi separate in quanto il tipo di dato di una qualunque di queste proprietà è sempre un oggetto Range.

L’identificazione di una singola cella può avvenire indicandone il numero di riga e il numero di colonna come se si trattasse del singolo elemento di una matrice corrispondente all’intero foglio di lavoro.

Page 95: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

95

Gestire l’Interazione con Excel:

Mettiamo Insieme Funzioni e Fogli di Lavoro

Riscriviamo le nostre funzioni in forma più compatta utilizzando un tipo dati definito dall’ utente (struttura)

Type Opzione

S As Double ' valore del sottostante

K As Double ' prezzo di esercizio (strike)

T As Double ' scadenza espressa in anni

r As Double ' tasso risk free

q As Double ' tasso aggiustamento misura

Sigma As Double ' volatilità sottostante

Payoff As Integer ' tipo payoff (call/put)

Esercizio As Integer ' tipo Esercizio (eur/ame)

End Type

Page 96: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

96

Gestire l’Interazione con Excel:

Mettiamo Insieme Funzioni e Fogli di Lavoro

Public Function BS(Opt As Opzione) As Double Dim d1 As Double Dim d2 As Double d1 = D_1(Opt) d2 = D_2(Opt)

With Opt Select Case .Payoff Case OPTCALL BS = .S * Exp(-.q * .T) * Application.NormSDist(d1) _ -.K * Exp(-.r * .T) * Application.NormSDist(d2) Case OPTPUT BS = -.S * Exp(-.q * .T) * Application.NormSDist(-d1) _ +.K * Exp(-.r * .T) * Application.NormSDist(-d2) End Select End With End Function

Public Function BS(Opt As Opzione) As Double Dim d1 As Double Dim d2 As Double d1 = D_1(Opt) d2 = D_2(Opt)

With Opt Select Case .Payoff Case OPTCALL BS = .S * Exp(-.q * .T) * Application.NormSDist(d1) _ -.K * Exp(-.r * .T) * Application.NormSDist(d2) Case OPTPUT BS = -.S * Exp(-.q * .T) * Application.NormSDist(-d1) _ +.K * Exp(-.r * .T) * Application.NormSDist(-d2) End Select End With End Function

Page 97: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

97

Gestire l’Interazione con Excel:

Mettiamo Insieme Funzioni e Fogli di Lavoro

La funzione così scritta non è più una “Funzione definita

dall’utente” e quindi non può essere inserita direttamente in

una cella del foglio Excel;

Per lanciare il calcolo dobbiamo richiamarla da un programma

VBA;

Questo programma può essere ad esempio la macro

collegata all’evento click di un pulsante di comando

Vediamo un esempio concreto...

La funzione così scritta non è più una “Funzione definita

dall’utente” e quindi non può essere inserita direttamente in

una cella del foglio Excel;

Per lanciare il calcolo dobbiamo richiamarla da un programma

VBA;

Questo programma può essere ad esempio la macro

collegata all’evento click di un pulsante di comando

Vediamo un esempio concreto...

Esempio 1_3.xls

Page 98: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

98

Alcune Osservazioni sullo Sviluppo di Applicazioni in VBA

Vantaggi Rispetto all’inserimento diretto di una formula nel foglio Excel, lo sviluppo di

funzioni in VBA permette una maggiore chiarezza di sviluppo e ua maggior rubostezza rispetto agli errori;

Maggiore portabilità Maggiore estendibilità In altre parole maggiore manutenibilità del codice

Svantaggi Il VBA è un linguaggio interpretato e non particolarmente performante quando si

tratta di eseguire calcoli numerici. Occorre sempre tener presente questa limitazione quando si deve scegliere il linguaggio di sviluppo di un algoritmo.

Tuttavia questa limitazione è effettivamente importante in un numero limitato di casi e comunque la conoscenza della programmazione in VBA è comunque un elemento utile in quanto permette di gestire l’interazione con Excel e di sviluppare (tramite DLL) gli algoritmi nel linguaggio più appropriato.

Vantaggi Rispetto all’inserimento diretto di una formula nel foglio Excel, lo sviluppo di

funzioni in VBA permette una maggiore chiarezza di sviluppo e ua maggior rubostezza rispetto agli errori;

Maggiore portabilità Maggiore estendibilità In altre parole maggiore manutenibilità del codice

Svantaggi Il VBA è un linguaggio interpretato e non particolarmente performante quando si

tratta di eseguire calcoli numerici. Occorre sempre tener presente questa limitazione quando si deve scegliere il linguaggio di sviluppo di un algoritmo.

Tuttavia questa limitazione è effettivamente importante in un numero limitato di casi e comunque la conoscenza della programmazione in VBA è comunque un elemento utile in quanto permette di gestire l’interazione con Excel e di sviluppare (tramite DLL) gli algoritmi nel linguaggio più appropriato.

Page 99: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

99

Gestire l’Interazione con Excel User Form

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

Page 100: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

100

Gestire l’Interazione con ExcelAlcuni 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 101: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

101

Lavorare in Ambiente MS Excel Le Macro di Excel L’ambiente di Sviluppo del VBA La Sintassi del VBA

Tipi di Dato e Operatori Istruzioni di Controllo Strutture Dati Procedure

Gestire l’Interazione con Excel Funzioni Speciali

Lavorare in Ambiente MS Excel Le Macro di Excel L’ambiente di Sviluppo del VBA La Sintassi del VBA

Tipi di Dato e Operatori Istruzioni di Controllo Strutture Dati Procedure

Gestire l’Interazione con Excel Funzioni Speciali

Elementi di Programmazione in Visual Basic per Excel

Page 102: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

102

Funzioni Speciali

Gestione delle Date

Year(). Questa funzione restituisce in output un numero intero (di tipo Integer)

che contiene l’anno estratto da una data che riceve come parametro di input.

Nel riquadro seguente vediamo un esempio di impiego della funzione Year. Supponiamo di voler costruire una funzione che prenda come parametro di input una data e che restituisca un valore logico vero o

falso a seconda che l’anno della data sia o meno bisestile.

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 103: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

103

Funzioni Speciali

Gestione delle Date Month().

Questa funzione permette di estrarre il numero del mese da una data che riceve come parametro di input e restituisce tale valore in formato Integer.

Nel seguente esempio di codice abbiamo scritto una semplice funzione che restituisce il numero di giorni del mese a cui appartiene la data passata come parametro alla funzione stessa.

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

Page 104: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

104

Funzioni Speciali

Gestione delle Date

Day(). La funzione Day() permette di estrarre il numero del giorno da

una data che riceve come parametro. Tale valore viene restituito

come al solito in formato Integer.

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.

Page 105: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

105

Funzioni Speciali

Gestione delle Date

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

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

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

Page 106: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

106

Funzioni Speciali

Gestione delle Date

DateAdd(). Restituisce un valore Variant (Date) contenente una data alla quale

è stato aggiunto un intervallo di tempo specificato. La sintassi di questa funzione è la seguente

 

DateAdd(intervallo, numero, data) 

dove intervallo è un’espressione di tipo stringa corrispondente

all'intervallo di tempo che si desidera aggiungere, numero è un’ espressione numerica corrispondente al numero di

intervalli da aggiungere (può essere positiva, per ottenere date future, oppure negativa, per ottenere date passate),

data, infine, rappresenta un valore di tipo data o di tipo stringa che rappresenta una data a cui viene aggiunto l'intervallo.

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.

Page 107: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

107

Funzioni Speciali

Gestione delle Date DateAdd

La funzione DateAdd consente di aggiungere o sottrarre da una data un intervallo di tempo specificato. È, ad esempio, possibile utilizzare DateAdd per determinare la data risultante dall'aggiunta di 30 giorni alla data odierna oppure l'orario risultante dall'aggiunta di 45 minuti all'ora corrente.

Per aggiungere giorni a date, è possibile utilizzare l'impostazione per il giorno dell'anno ("y"), per il giorno ("d") o per il giorno della settimana ("w").

La funzione DateAdd non restituisce una data non valida. In questo esempio, alla data 31 gennaio viene aggiunto un mese:

 

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

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

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

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

intervallo di tempo specificato. È, ad esempio, possibile utilizzare DateAdd per determinare la data risultante dall'aggiunta di 30 giorni alla data odierna oppure l'orario risultante dall'aggiunta di 45 minuti all'ora corrente.

Per aggiungere giorni a date, è possibile utilizzare l'impostazione per il giorno dell'anno ("y"), per il giorno ("d") o per il giorno della settimana ("w").

La funzione DateAdd non restituisce una data non valida. In questo esempio, alla data 31 gennaio viene aggiunto un mese:

 

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

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

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

Page 108: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

108

Funzioni Speciali

Gestione delle Date DateDiff().

Restituisce un valore Variant(Long) corrispondente al numero di intervalli di tempo tra due date specificate. La sintassi della funzione DateDiff è la seguente

 

DateDiff(intervallo, data1, data2) 

dove intervallo è un’espressione di tipo stringa corrispondente all'intervallo di

tempo utilizzato per calcolare la differenza tra data1 e data2.

È possibile utilizzare la funzione DateDiff per determinare quanti intervalli di tempo specificati esistono tra due date.

Ad esempio possiamo utilizzare DateDiff per calcolare il numero di giorni che intercorrono tra due date oppure il numero di settimane tra la data odierna e la fine dell'anno.

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.

Page 109: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

109

Funzioni Speciali

Gestione delle Date

DateDiff Per ottenere il numero di giorni tra data1 e data2 è possibile utilizzare

sia l'impostazione del giorno dell'anno ("y") che quella del giorno ("d"). Quando per intervallo viene impostato il giorno della settimana ("w"),

DateDiff restituisce il numero di settimane che intercorrono tra le due date.

Se data1 cade di lunedì, DateDiff conterà il numero di lunedì fino a data2, includendo nel conteggio data2 ma non data1.

Se per intervallo viene invece impostata la settimana ("ww"), la funzione DateDiff restituirà il numero di settimane del calendario comprese tra le due date.

La funzione conterà il numero di domeniche che intercorrono tra data1 e data2, includendo nel conteggio data2 se cade di domenica, ma non data1, anche se cade di domenica.

Page 110: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

110

Funzioni Speciali

Gestione delle Date

DateDiff Se data1 è successiva a data2, la funzione DateDiff restituirà un

numero negativo. Se data1 o data2 è un valore letterale di data, l'anno, se specificato,

diventa parte permanente della data. Se tuttavia data1 o data2 è racchiuso tra virgolette doppie ("") e si omette l'anno, ogni volta che l'espressione data1 o data2 viene valutata verrà inserito nel codice l'anno corrente. Ciò rende possibile la scrittura di codice utilizzabile per anni diversi.

Va segnalato che quando si esegue il confronto tra il 31 dicembre e l'1 gennaio dell'anno immediatamente successivo, DateDiff utilizzata con l'impostazione dell'anno ("yyyy") restituisce 1 anche se è trascorso un solo giorno.

Page 111: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

111

Funzioni Speciali

Gestione delle Date

Modalità con cui Excel interpreta le date ambigue  

Quando interpreta date ambigue, Excel procede per supposizioni.

Ad esempio, quando si inserisce una data che include solo il mese e

una o due cifre, Excel assume che da 1 a 31 sia il giorno e che l'anno

sia l'anno corrente.

Excel assume che 01 dicembre sia 1 dicembre dell'anno corrente, non

dicembre dell'anno 2001 oppure che dicembre 32 sia 1 dicembre 1932.

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.

Page 112: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

112

Funzioni Speciali

Gestione delle Date

Modalità secondo cui Excel interpreta gli anni a due cifre   Per impostazione predefinita, quando si inserisce un valore di anno a due cifre,

Excel lo interpreta nel seguente modo:

da 00 a 29   Excel interpreta i valori di anno a due cifre da 00 a 29 come gli anni che vanno dal 2000 al 2029. Ad esempio, se si digita la data 28/5/19, Excel assume che la data sia 28 maggio, 2019.

da 30 a 99   Excel interpreta i valori anno a due cifre da 30 a 99 come gli anni che vanno dal 1930 al 1999. Ad esempio, se si digita la data 28/5/98, Excel assume che la data sia 28 maggio, 1998.

In ogni caso è fortemente consigliabile introdurre sempre date con quattro cifre per l’indicazione dell’anno anche se occorre essere consapevoli che questo naturalmente renderà obsoleti i nostri programmi fra circa 8000 anni.

Page 113: Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005 1 Modelli Finanziari nel Tempo Continuo 1 Elementi di Programmazione in Visual Basic.

Università dell'Insubria - C.d.L. in Banca & Finanza - A.A. 2004-2005

113

Bibliografia

S. Benninga “Modelli Finanziari – La finanza con Excel”

McGraw-Hill (2001)

U. Cherubini, G. Della Lunga “Matematica Finanziaria –

Applicazioni con VBA per Excel” McGraw-Hill (2001)

U. Cherubini, G. Della Lunga “Il Rischio Finanziario”

McGraw-Hill (2000)

E. Gaarder Haug “The Complete Guide to Option

Pricing Formulas” McGraw-Hill (1998)

M. Jackson, M. Staunton “Advanced Modelling in

Finance using Excel and VBA” Wiley Finance (2001)