excel-vba Utilizzare SEMPRE "Option Explicit"


Esempio

Nella finestra Editor VBA, dal menu Strumenti seleziona "Opzioni":

inserisci la descrizione dell'immagine qui

Quindi nella scheda "Editor", assicurati che "Richiedi dichiarazione di variabili" sia spuntato:

inserisci la descrizione dell'immagine qui

Selezionando questa opzione verrà automaticamente aggiunta l' Option Explicit nella parte superiore di ogni modulo VBA.

Piccola nota: questo è vero per i moduli, i moduli di classe, ecc. Che non sono stati aperti finora. Quindi, se hai già dato un'occhiata ad esempio al codice di Sheet1 prima di attivare l'opzione "Require Variable Declaration", Option Explicit non verrà aggiunta!

Option Explicit richiede che ogni variabile debba essere definita prima dell'uso, ad esempio con un'istruzione Dim . Senza Option Explicit abilitato, il compilatore VBA assumerà qualsiasi parola non riconosciuta come una nuova variabile del tipo Variant , causando bug estremamente difficili da individuare in relazione agli errori tipografici. Con Option Explicit abilitata, qualsiasi parola non riconosciuta causerà un errore di compilazione, che indica la linea offendente.

Esempio :

Se si esegue il seguente codice:

Sub Test()
  my_variable = 12
  MsgBox "My Variable is : " & myvariable
End Sub

Riceverai il seguente messaggio:

inserisci la descrizione dell'immagine qui

Hai fatto un errore scrivendo myvariable anziché my_variable , quindi la finestra del messaggio mostra una variabile vuota. Se si utilizza Option Explicit , questo errore non è possibile perché si otterrà un messaggio di errore di compilazione che indica il problema.

inserisci la descrizione dell'immagine qui

Ora se aggiungi la dichiarazione corretta:

Sub Test()
  Dim my_variable As Integer
  my_variable = 12
  MsgBox "My Variable is : " & myvariable
End Sub

myvariable un messaggio di errore che indica precisamente l'errore con myvariable :

inserisci la descrizione dell'immagine qui


Nota su Option Explicit e Arrays ( Dichiarazione di una matrice dinamica ):

È possibile utilizzare l'istruzione ReDim per dichiarare implicitamente un array all'interno di una procedura.

  • Fare attenzione a non digitare errori ortografici nel nome dell'array quando si utilizza l'istruzione ReDim

  • Anche se l'istruzione Option Explicit è inclusa nel modulo, verrà creato un nuovo array

    Dim arr() as Long

    ReDim ar() 'creates new array "ar" - "ReDim ar()" acts like "Dim ar()"