Informatica per la Finanza 3 Le variabili in VBA Altri I/O 28/02/2014 Copyright 2005-2007 V. Moriggia 1 28/02/2014 3.2 Le variabili in VBA V. Moriggia 1
28/02/2014 3.3 Dichiarazione di variabili in VBA Una variabile può essere utilizzata immediatamente senza essere dichiarata Una variabile è sempre inizializzata a zero (in alcuni casi a vuoto ) Per imporre la dichiarazione esplicita: Option Explicit 28/02/2014 3.4 Dichiarazione di variabili in VBA La dichiarazione esplicita di una variabile si ottiene con il comando Dim nomevariabile Il tipo predefinito di default è il Variant altri tipi elementari sono: Integer: Dim nomevariabile as Integer Long: Dim nomevariabile as Long Double: Dim nomevariabile as Double String: Dim nomevariabile as String V. Moriggia 2
28/02/2014 3.5 Tipi di dati Tipo di dato Spazio Intervallo Byte 1 byte Da 0 a 255 Boolean 2 byte True o False Integer 2 byte Da -32.768 a 32.767 Long (intero lungo) 4 byte Da -2.147.483.648 a 2.147.483.647 Single 4 byte Da -3,402823E38 a -1,401298E-45 per valori negativi; da (virgola mobile a precisione semplice) 1,401298E-45 a 3,402823E38 per valori positivi Double 8 byte Da -1.79769313486231E308 a -4,94065645841247E-324 per (virgola mobile a precisione doppia) valori negativi; da 4,94065645841247E-324 a 1,79769313486232E308 per valori positivi. Currency (intero diviso) 8 byte Da -922.337.203.685.477,5808 a 922.337.203.685.477,5807 Decimal 14 byte +/-79.228.162.514.264.337.593.543.950.335 senza virgola; +/- 7,9228162514264337593543950335 con 28 decimali; il numero minore diverso da zero è +/-0,0000000000000000000000000001 Date 8 byte Dall'1 gennaio 100 al 31 dicembre 9999 Object 4 byte Qualsiasi riferimento Object String (lunghezza variabile) 10 byte+ Da 0 a circa 2 miliardi String (lunghezza fissa) Lungh. str. Da 1 a circa 65.400 Variant (con numeri) 16 byte Qualsiasi valore numerico fino all'intervallo di un Double Variant (con caratteri) 22 byte+ Stesso intervallo di String a lunghezza variabile Definito dall'utente N. richiesto L'intervallo di ciascun elemento è identico a quello del relativo tipo di (utilizzando Type) dati sopraelencato. 28/02/2014 3.6 Assegnazione variabile = espressione x = 10 y = x * 10 / 2 + 3 s = "Hello world!" V. Moriggia 3
28/02/2014 3.7 Esempi Assegnare il risultato di 20 per 3 alla variabile a senza dichiararla Aggiungere la clausola Option Explicit 28/02/2014 3.8 INPUT in VBA V. Moriggia 4
28/02/2014 3.9 Input di una subroutine: range().value Direttamente dalle celle del foglio Sub Input1() Dim a As Double a = Range("A1").Value MsgBox a End Sub Nota: Range( A1:B5 ) equivale a Range( A1, B5 ) è possibile anche Range( A1;B3;C2 ) 28/02/2014 3.10 Esercizio Convertire i gradi Celsius contenuti nella cella A1 nei corrispondenti gradi Fahrenheit in cella B1 V. Moriggia 5
28/02/2014 3.11 Input di una subroutine: range().value E possibile utilizzare i nomi di zona: a = Range( capitale").value Tipi restituiti sono: double per i dati numerici string per le etichette di testo 28/02/2014 3.12 Input da MsgBox() Sub InputMsgBox() ' Chiamata di una FUNCTION rc = MsgBox("Prova come funzione") End Sub V. Moriggia 6
28/02/2014 3.13 Output di una subroutine: msgbox Stringa di messaggio attraverso un pop-up Continua Sub Output3() sulla riga Dim rc successiva ' Chiamata di una SUBroutine MsgBox "prova di testo via pop-up", vbcritical _ + vbokonly, "Prova PopUp" ' Chiamata di una FUNCTION rc = MsgBox("Prova come funzione") End Sub 28/02/2014 3.14 Input di una subroutine: inputbox Attraverso una finestra di pop-up Sub Input2() prompt Dim a As Variant a = InputBox("Immettere l'età:", _ "Prova di InputBox", 5) MsgBox a End Sub Titolo della finestra Valore di default (proposto) V. Moriggia 7
28/02/2014 3.15 Esempi Assegnare a una variabile il valore restituito da MsgBox e copiarlo nella cella A1 Leggere il contenuto delle celle C2 e C3 e riportare la somma in C4 Leggere due valori con InputBox e restituirne la somma con MsgBox 28/02/2014 3.16 Ripasso di Excel La cella A1 contiene un numero compreso tra 0 e 1? =SE(E(A1>0,A1<1),"Vero","Falso") =E(A1>0,A1<1) V. Moriggia 8
28/02/2014 3.17 Selezione semplice Se condizione Allora istruzione If condizione Then istruzione If condizione Then istruzioni End If Se condizione Allora istruzione Altrimenti istruzione alternativa If condizione Then istruzioni Else istruzioni End If 28/02/2014 3.18 Operatori di confronto e logici OPERATORI DI CONFRONTO var./cost. OPER var./cost. = uguale a > maggiore di < minore di <> diverso da >= maggiore o uguale a <= minore o uguale a OPERATORI LOGICI condiz. OPER condiz. And intersezione Or unione Not negazione V. Moriggia 9
28/02/2014 3.19 Esercizi 3.1 Implementare la subroutine miamax2 che scriva in B3 il maggiore tra due numeri contenuti nelle celle B1 e B2 28/02/2014 3.20 Funzioni Excel vs. Macro VBA Unione di celle Ricalcolo una tantum (ad ogni esecuzione) Ricalcolo immediato (ad ogni immissione) V. Moriggia 10
28/02/2014 3.21 Cella attiva ActiveCell.FormulaR1C1 = "123" oggetto azioni o metodi proprietà o attributi 28/02/2014 3.22.FormulaR1C1 Diverso da.formula? C3: R[2]C[-3] =INDIRETTO(C3,FALSO) Sub InsFormule() ActiveCell.Formula = "=B1*C1" ' VS. ActiveCell.FormulaR1C1 = "=RC[1]*RC[2]" End Sub V. Moriggia 11