Se hai mai programmato delle macro, probabilmente hai familiarità con il modo in cui si definiscono le variabili utilizzando la parola chiave Dim. Ad esempio, puoi definire una variabile integer con il nome MyVar come segue:
Dim MyVar As Integer
Questo è molto semplice e funzionerà bene nel tuo codice. Per salvare alcune righe nel codice potresti essere tentato di definire più variabili per riga:
Dim x, y, z As Integer
In alcune versioni del linguaggio BASIC, questo definirà e inizializzerà tre variabili, ciascuna come numero intero. Anche in VBA sembra funzionare correttamente e non viene generato alcun errore. Tuttavia, c’è un piccolo problema: solo l’ultima variabile (z) è effettivamente definita come un numero intero. Puoi vedere come funziona utilizzando il codice seguente:
Sub DimTest()
Dim x, y, z As Integer
Dim sTemp As String
sTemp = "x è del tipo " & VarType(x) & vbCrLf
sTemp = sTemp & "y è del tipo " & VarType(y) & vbCrLf
sTemp = sTemp & "z è del tipo " & VarType(z)
MsgBox sTemp
End Sub
Quando si esegue la macro, la finestra di messaggio mostra che il tipo di variabile per x e y è 0, il che significa che la variabile è una variant (il tipo di dati predefinito per le variabili non dichiarate). Solo l’ultima finestra di messaggio (per z) mostra un tipo di variabile 2, che significa numero intero.
La soluzione è assicurarti di dichiarare le tue variabili una per riga, o usando la sintassi completa per ogni variabile, come di seguito:
Dim x As Integer, y As Integer, z As Integer