TOP

VBA-Lezione 6.2. Tipi di dati (Variables)

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

Matrice unidimensionale

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"

Costanti

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

Creazione del proprio tipo di variabile

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