Transcription of PROGRAMMAZIONE VBA-EXCEL E FINANZA
1 P R O G R A M M A Z I O N E V B A - E X C E L E F I N A N Z Aantonio grandeUna guida per i principiantiAntonio GrandeProgrammazione VBA-EXCEL e finanzaSoluzioni VBA di problemi di FINANZA classica e modernaISBN:978-88-907402-0-6 Quest opera stata rilasciata con:licenza Creative Commons Attribuzione - Non commerciale versione digitale dell opera disponibile all Pi 2006A B S T R A C TThe VBA ( visual Basic for Application) language has among it s cha-racteristics the capacity to interact with spreadsheet data, that has avery simple study, after having examined the language basic notions, sug-gests a methodology to find out automatic solutions for classic andmodern finance problems such as: the (pseudo)casual numbers ge-neration, the price of the Asian and European Call/Put with Black-Scholes and Montecarlo methods, the efficient frontier with the Mar-kowitz model, the download of stock prices from B S T R A C TIl linguaggio VBA ( visual Basic for Application) ha tra le sue caratteri-stiche quella di interagire con i dati del foglio elettronico che utilizzauna struttura di dati concettualmente molto libro, passati in rassegna i fondamentali dei linguaggio , propone lesoluzioni automatiche di problemi di FINANZA classica e moderna tracui citiamo.
2 La generazione di numeri (pseudo)casuali, il calcolo diuna put/call sia per le opzioni europee che per quelle asiatiche conBlack-Scholes e Montecarlo, la frontiera efficiente con il modello diMarkowitz, lo scaricamento delle quotazioni di titoli da I N G R A Z I A M E N T IL anno scorso, durante un brevissimo viaggio in treno alla volta diuna sede distaccata dell universit , la professoressa Giusy Bruno edil sottoscritto, discutemmo sul progetto di una serie di appunti perla soluzione di problemi di FINANZA moderna con un linguaggio idea del libro nasce da l . Voglio ringraziare in modo particolarela professoressa Bruno per i consigli sulla scaletta degli argomentie per la pazienza che ha avuto nelle occasioni in cui le ho chiestochiarimenti e quant responsabilit di quanto scritto soltanto dell altro sentito ringraziamento lo devo alle persone che si oc-cupano di sviluppare e diffondere LATEX, il software utilizzato perscrivere il libro, tra i quali ricordo: (mitico) Donald Erwin Knuth,pantieri:2012,miede:2012(cui si deve lo stile tipografico di questolibro),bring:2008,pantieri:2012non ch la comunit ringraziamento, non per questo di minore importanza, atutti gli studenti dei corsi di Strumenti Informatici per la FINANZA sen-za i quali, certamente, la qualit di quanto scritto sarebbe stata infe-riore.
3 In particolare vorrei ringraziare Claudio Trischitta ed GrandeRoma, maggio2012viiI N D I C Ei fondamentali vba11 l ambiente IDE di VBA .. comandi del menu .. barra degli strumenti .. finestra Progetto .. finestra Propriet .. finestra Codice .. errori del programma .. esecuzione di una macro ..102 dati ed di dati .. e variabili .. dichiarazione delle variabili .. di assegnazione .. incremento di una variabile .. espressioni logiche ..163 le funzioni Excel in VBA .. funzioni VBA .. guida delle funzioni .. modifica dell ordine degli argomenti ..214 le istruzioni monoistruzione .. semplice .. Then .. Else .. nidificati .. Case ..275 i ciclo For Next .. sommatoria .. ciclo Do While .. ciclo Do .. Loop While/Until .. interrompere un ciclo .. cicli nidificati ..376 le funzioni definite dall funzione InputBox.
4 Funzione IsNumeric .. funzione ad un risultato .. funzione a pi risultati ..457 la PROGRAMMAZIONE ad oggetti in e metodi .. si programma un oggetto .. propriet in VBA .. metodi in VBA .. cancellazione di una zona .. collezioni di oggetti .. oggetto Excel .. gestione dei fogli ..58ii appendix61E L E N C O D E L L E F I G U R EFigura1La finestra visual Basic ..6 Figura2La barra dei menu (sopra) e la barra degli stru-menti (sotto) ..6 Figura3errore formale ..9 Figura4errore in esecuzione ..10 Figura5 Tipo, bytes e valori corrispondenti ..15 Figura6Le principali funzioni VBA ..20 Figura7Il visualizzatore di oggetti ..21 Figura8Il calcolo delle celle piene ..34 Figura9La ricerca di un dato ..35 Figura10 Totali di riga e colonna ..37 Figura11La funzioneInputBox..41 Figura12La finestra VBA e, in secondo piano, la finestraExcel ..56 Figura13I fogli aggiunti.
5 57xiParte IF O N D A M E N T A L I V B AI N T R O D U Z I O N EcontenutoVisual Basic for Application (VBA) il linguaggio di programmazioneMicrosoft per la suite Office (Word, Excel, Power Point, Access).Questo libro si occupa della soluzione di alcuni problemi di fi-nanza classica e moderna con la PROGRAMMAZIONE in VBA del foglioelettronico Excel. Non un manuale di visual parte iniziale, capitoli1-8, vengono illustrate la caratteristicheprincipali del linguaggio corredate da numerosi esempi. Al terminedi ciascun capitolo presente un paragrafo di esercizi relativi agliargomenti capitoli9e10sono dedicati a due argomenti di rilievo: le variabilicon indice e le operazioni con le capitolo11in poi sono presentate le soluzioni di alcuni tra iprincipali problemi di FINANZA . Queste le soluzioni sono improntatealla generalizzazione del importanti precisazioni che riguardano lo stile con cuisono stati scritti i programmi.
6 Per motivi legati alle finalit del libro,di carattere essenzialmente didattico, si tenga presente che: le istruzioni non sempre cominciano a partire dalla prima co-lonna ma sono disposte secondo una tabulazione (allineamentoorizzontale) particolare. Questa tecnica, riconducibile alla pro-grammazione strutturata , si utilizza per facilitare la leggibilit del programma ma non assolutamente vincolante; sempre al fine di miglioramento della leggibilit , abbiamo evi-tato di ricorrere ad istruzioni o artifici di PROGRAMMAZIONE . Inaltre parole si preferito scrivere i programmi in uno stile orien-tato alla facilit di comprensione pi che alla velocit di esecu-zione. Si tenga presente che questo approccio porta, di solito,ad un aumento del numero di del programmaTutto il codice del libro stato verificato con il programma MicrosoftOffice2003. La versione pi recente di questo programma dei programmiLa versione PDF del libro ed il codice dei programmi sono disponibiliall indirizzo: delle figureconvenzioni tipograficheNel testo del libro sono state adottate le seguenti convenzioni tipogra-fiche: quello che segue lo stile impiegato per riferirsi ad una ; quella riportata di seguito un esempio della sequenza con cuinel libro ci riferiamo all esecuzione di due comandi del menucomando1 comando2; in tutti gli esempi di programmi del libro, le parole chiave dellinguaggio, ossia i comandi VBA, sono riportati con un caratterepi chiaro, mentre le parti restanti, decise in modo arbitrariodall utente, sono scritte con un carattere titolo di esempio si consideri il Le parole chiavein grigio se leggete su carta, in azzurro se leggete a video, sono Sub , End Sub , MsgBox.
7 Le parti restanti sono nomi A M B I E N T E V B AIl linguaggioVisual Basic (for) Application, VBA nel seguito, unaevoluzione del Basic, il linguaggio in dotazione ai personal compu-ter di prima generazione (inizi degli anni 80). VBA integrato nelprogramma Microsoft Office che, come sappiamo, comprende i pro-grammi Word, Excel, Power Point e Access. Tra le sue caratteristichericordiamo anche quelle di ammettere la programmazionead oggetti(l argomento sar discusso in un apposito capitolo). l ide di vbaL ambiente che utilizzeremo per la scrittura dei programmi si presen-ta sotto forma di interfaccia grafica a finestre di tipo IDE oIntegra-ted Development Environment(ambiente di sviluppo integrato). In unainterfaccia di questo tipo, si dispone di un insiemeintregratodi stru-menti atti a facilitare il programmatore nella scrittura dei strumenti dell IDE VBA sono: l editore di testi ovvero un ambiente che facilita la scrittura delleistruzioni; il debugger ossia lo strumento che facilita il controllo delle istru-zioni; un sistema per la navigazione tra i componenti del visualizzazione di questa finestra, chiamata anche finestra VBA,si ottiene con i tasti Alt+F11durante una sessione Excel.
8 La vediamoriprodotta nella figura1. Da qui, come sar chiarito meglio nel pro-sieguo, potremo accedere a comandi, icone e quant altro sia utile allamemorizzazione, la scrittura, l esecuzione ed il controllo (debugging)dei programmi. Pu essere suddivisa idealmente in due parti: unasuperiore ed una inferiore e ciascuna di queste divisibile in zona superiore si trova la barra del menu e, sotto di que-sta, la barra degli strumenti. Nella parte inferiore, suddivisa in tresottofinestre ridimensionabili e fluttanti, possiamo individuare:1 la finestra di gestione dei progetti (il suo titolo Progetto -VBAP roject);1se queste finestre non fossero visibili eseguire, per ciascuna di esse i comandi delmenu:Visualizza Gestione progettiper la prima,Visualizza Finestra propriet per la seconda,Visualizza Codiceper la ambiente vbaFigura1: La finestra visual Basic la finestra delle propriet (il suo titolo Propriet - Foglio1); la finestra del codice (non visibile nella figura occupa normal-mente la parte in grigio).
9 I comandi del menuLa barra dei menu composta da un insieme di comandi che, almomento attuale, non il caso di conoscere in modo approfondito. Lafunzione dei comandi che la compongono sar chiarita al momentoin cui se ne presenter l : La barra dei menu (sopra) e la barra degli strumenti (sotto) la barra degli strumentiLa barra degli strumenti si trova sotto quella dei comandi. E chiama-ta Standard in quanto esistono altre barre di strumenti che per sempli-cit , sono visualizzate a richiesta (si tratta delle barreModifica, DebugeUser Form). Al passaggio del mouse sopra le icone che la compongo-no, si visualizza il titolo corrispondente. Presentiamo una elencazio-ne di quelli che necessitano di approfondimento in base all ordine Microsoft Excelvisualizza la finestra con la cartella User Formla sua funzione verr commentata nel capitoloappositamente la finestra progetto7 Salvasalva la cartella di lavoro insieme a tutto cio che si trova nellafinestra dell editor.
10 Si tenga presente, se siamo partiti da una car-tella vuota, che alla cartella di lavoro viene attibuito in automati-co un nome costituito dal prefisso Cartel seguito da un numerointero progressivo. Se vogliamo attribuire un nome mnemonicoalla cartella corrente si consiglia di non usare questa icona per ilsalvataggio. In questo caso necessario ritornare nell ambienteExcel e ricorrere ai comandi del menuFile Salva con annullareImpossibile ripetereEsegui Sub/User Formsi usa per eseguire un programma VBA; sene parler nel prossimo l esecuzione del utilizza quando l esecuzione del programma si arrestaa causa di un errore. In questo caso viene evidenziata l istru-zione che lo ha generato e l utente premendo questo pulsanteriporta il programma allo stato iniziale (ovvero nello stato in cuisi trovava prima dell esecuzione).Modalit progettazioneGestione progettivisualizza la finestra Propriet visualizza la finestra Oggettivisualizza la finestra la finestra progettoSi trova nella parte alta sinistra e visualizza un elenco dei progetti2sotto forma di diagramma ad albero collassabile (le cartelle attual-mente aperte).