Nella lezione precedente abbiamo esaminato le variabili in cui è possibile scrivere determinati dati, ma non possono contenere più di un valore. Per aggirare questa limitazione, ci sono array in VBA che possono memorizzare più valori.
Ecco alcuni esempi di array diversi:
Sub variables() 'Un esempio di dichiarazione di una variabile Dim var1 As String 'Un esempio di dichiarazione di un array unidimensionale Dim array1(4) As String 'Un esempio di dichiarazione di un array bidimensionale Dim array2(4, 3) As String 'Un esempio di dichiarazione di un array tridimensionale Dim array3(4, 3, 2) As String End Sub
Dim array1(4) As String
Un array unidimensionale può essere considerato come una tabella composta da una colonna. L'array array1(4) è un array unidimensionale che può contenere 5 record. Perché 5? Perché il numero di record nell'array inizia da zero (0, 1, 2, 3, 4).
Consideriamo ora un array bidimensionale:
Dim array2(4, 3) As String
Sembrerà già una tabella con 5 righe e 4 colonne:
'Assegnazione di valori per le celle colorate array2(0, 0) = "Valore nel globulo rosso" array2(4, 1) = "Valore nella cella verde" array2(2, 3) = "Il valore nella cella blu"
Come le variabili, le costanti possono essere utilizzate per memorizzare valori, ma la differenza è che i valori non possono cambiare. Possiamo aggiungere una costante per evitare di ripetere il valore, ad esempio 13.14:
Sub const_example() Cells(1, 1) = Cells(1, 2) * 13.14 Cells(2, 1) = Cells(2, 2) * 13.14 Cells(3, 1) = Cells(3, 2) * 13.14 Cells(4, 1) = Cells(4, 2) * 13.14 Cells(5, 1) = Cells(5, 2) * 13.14 End Sub
Ciò rende il codice più facile da comprendere e modificare. Permette anche di modificare il valore della costante in modo molto semplice:
Sub const_example() 'Dichiarare una costante + assegnare un valore Const ANNUAL_RATE As Double = 13.14 Cells(1, 1) = Cells(1, 2) * ANNUAL_RATE Cells(2, 1) = Cells(2, 2) * ANNUAL_RATE Cells(3, 1) = Cells(3, 2) * ANNUAL_RATE Cells(4, 1) = Cells(4, 2) * ANNUAL_RATE Cells(5, 1) = Cells(5, 2) * ANNUAL_RATE End Sub
Ambito delle variabili
Se una variabile viene dichiarata all'inizio di una procedura (Sub), può essere utilizzata solo in questa procedura. Il valore della variabile non sarà più disponibile una volta eseguita la procedura.
Sub procedure1() Dim var1 As Integer '=> La variabile è valida solo in questa procedura End Sub Sub procedure2() '=> var1 non può essere utilizzato qui End Sub
Per utilizzare una variabile in qualsiasi procedura del modulo, dobbiamo solo dichiararla all'inizio del modulo. E se dichiari una variabile come questa, sarà disponibile fino alla chiusura della cartella di lavoro.
Dim var1 As Integer Sub procedure1() '=> var1 può essere utilizzato qui End Sub Sub procedure2() '=> Qui è possibile utilizzare anche var1 End Sub
Se vuoi utilizzare la stessa variabile in tutti i moduli del libro, devi solo sostituire Dim con Global nell'esempio precedente:
Global var1 As Integer
Per utilizzare una variabile dopo aver eseguito la procedura in cui appare, sostituire Dim con Static:
Sub procedure1() Static var1 As Integer End Sub
Per utilizzare i valori di tutte le variabili nella procedura, aggiungere Static prima di Sub:
Static Sub procedure1() Dim var1 As Integer End Sub
Ecco un rapido esempio di come puoi creare il tuo tipo:
'Creazione di un tipo di variabile Type customers last_name As String first_name As String End Type Sub variables() 'Dichiarazione di una variabile Dim cust1 As customers 'Assegnazione di un valore a cust1 cust1.last_name = "Smith" cust1.first_name = "John" 'Esempio di utilizzo MsgBox cust1.last_name & " " & cust1.first_name End Sub