Option Explicit nelle macro Excel
La presenza della clausola Option Explicit all'inizio di una macro Excel impone la dichiarazione delle variabili
Option Explicit
In presenza di questa clausola devo dichiarare le variabili per poterle utilizzare.
La macro genera un messaggio di errore quando incontra una variabile non dichiarata.
Nota. Di default la dichiarazione delle variabili non è obbligatoria in una macro Excel. Quando la macro incontra una variabile non dichiarata, la dichiara automaticamente. La presenza della clausola Option Explicit disabilita la dichiarazione automatica.
Faccio un esempio pratico.
In questa macro assegno un valore alla variabile Var1 senza dichiararla.
- Sub Macro2()
- var1 = "Hello"
- Range("B2").Select
- ActiveCell.FormulaR1C1 = var1
- End Sub
La macro funziona correttamente. Excel dichiara automaticamente la variabile, gli assegna il valore "Hello"
Poi lo visualizza nella cella B2.
Ora modifico la macro inserendo Option Explicit all'inizio delle macro
- Option Explicit
- Sub Macro2()
- var1 = "Hello"
- Range("B2").Select
- ActiveCell.FormulaR1C1 = var1
- End Sub
Quando eseguo la macro Excel visualizza un messaggio di errore "Variabile non definita" all'istruzione var1="Hello".
Questo accade perché al momento dell'assegnazione la variabile var1 non è stata ancora dichiarata.
In pratica, la presenza della clausola Option Explicit ha disabilitato la dichiarazione automatica delle variabili.
Nota. La clausola Option Explicit ha effetto su tutte le routine presenti nella macro. Non posso inserirla in una singola routine.
In presenza della clausola Option Explicit, devo necessariamente inserire la dichiarazione della variabile var1 prima dell'utilizzo.
- Option Explicit
- Sub Macro1()
- Dim var1 As String
- var1 = "Hello"
- Range("B2").Select
- ActiveCell.FormulaR1C1 = var1
- End Sub
In questo modo la macro funziona correttamente.
Excel dichiara la variabile var1, gli assegna il valore "Hello" e la visualizza nella cella B2.
E così via.