Wie verwende ich eine explizite optionsanweisung in vba?

Wichtige Punkte

  • Bei der Option „Explizit“ müssen Sie alle Variablen deklarieren.
  • Dies ist eine Deklaration, die Sie am Anfang eines Moduls verwenden können.
  • Sie können es manuell eingeben oder über die Optionen aktivieren.
  • Sie dürfen Option Explicit nur einmal verwenden.
  • Es hilft Ihnen auch, Tippfehler bei der Verwendung von Variablen zu erkennen.

Was ist eine explizite VBA-Option?

Option Explicit ist eine Anweisung, die Sie am Anfang eines Moduls verwenden können, um die Deklaration aller Variablen zu erzwingen. Wenn Sie diese Anweisung hinzufügen, zeigt Ihnen VBA beim Ausführen des Codes einen Kompilierungsfehler an und hebt außerdem die Variable im Code hervor, die Sie deklarieren müssen.

vba-option-explicit

Wenn Sie am Anfang eines Moduls eine explizite Option hinzufügen, fügt VBA darunter eine Trennlinie ein, und Sie können dann mit dem Schreiben einer Prozedur beginnen. Und wenn Sie über die explizite Deklarationsoption verfügen und eine Prozedur ausführen, prüft VBA, ob eine nicht deklarierte Variable vorhanden ist, und zeigt Ihnen eine Fehlermeldung an.

 Option Explicit Sub myMacro() a = 50 MsgBox a End Sub
VBA-Trennlinie hinzufügen

Oben sehen Sie die Meldung, die Sie erhalten, wenn eine Variable nicht deklariert ist.

Aktivieren Sie die explizite Option in VBA

Führen Sie die folgenden Schritte aus, um eine explizite Optionsanweisung in einem Modul zu aktivieren.

  1. Öffnen Sie zunächst den Visual Basic-Editor und klicken Sie im Menü „Extras“ auf „Optionen“.
    activate-option-explicit-in-vba
  2. Gehen Sie anschließend in den Optionen zur Registerkarte „Editor“ und aktivieren Sie das Kontrollkästchen „Variablendeklaration erforderlich“.
    editor-tab-and-tick-mark
  3. Klicken Sie am Ende auf OK.
  4. Sobald Sie dies tun, fügt VBA jedes Mal, wenn Sie ein neues Modul hinzufügen, eine explizite Option hinzu.

Diese Deklaration wird jedoch nicht zu Ihrem vorhandenen Modul hinzugefügt, sodass Sie sie einzeln manuell zu jedem der vorhandenen Module hinzufügen müssen.

Wie füge ich es manuell hinzu?

Wie bereits erwähnt, muss die Option Explicit-Anweisung vor der ersten Modulprozedur (Sub oder Function) stehen. Daher müssen Sie diese Deklaration über dem ersten Verfahren (Bereich „Allgemeine Deklarationen“) hinzufügen und sicherstellen, dass Sie sie nur einmal hinzufügen.

allgemeiner-deklarationsbereich

Wenn Sie es innerhalb einer Prozedur oder zwischen zwei Prozeduren hinzufügen, zeigt Ihnen VBA eine Fehlermeldung an, wenn Sie versuchen, einen der Codes des Moduls auszuführen.

VBA-zeigt-Ihnen-einen-Fehler an

Beispiele (Warum die Verwendung von Option Explicit Statement eine gute Angewohnheit ist)

Lassen Sie mich Ihnen ein Beispiel zeigen, damit Sie verstehen, warum die Option Explicit-Anweisung dringend empfohlen wird. Schauen Sie sich den folgenden Code an.

 Sub myMacro() Dim myText As String myText = "Puneet" MsgBox MyTxt End Sub

In diesem Code habe ich eine Variable „myText“ als String deklariert und dann den Wert dieser Variablen festgelegt. Und am Ende habe ich ein Meldungsfeld verwendet, das den Wert der Variablen anzeigt, aber wenn Sie genau hinschauen, habe ich diese Variable falsch als „MyTxt“ statt „myText“ geschrieben.

deklarierte Variable

Wenn ich diesen Code jetzt ausführe, wird mir ein leeres Meldungsfeld angezeigt.

leeres Nachrichtenfeld

Ich brauche Ihre 2 Minuten, um Ihnen zu helfen, das eigentliche Problem hier zu verstehen. Wenn ich den Variablennamen falsch eingegeben habe, betrachtet VBA ihn als separate Variable, und da ich die explizite Optionsanweisung nicht verwende, wird mir kein Fehler angezeigt.

Tippfehler im Variablennamen

Aus diesem Grund verwendet das Meldungsfeld die zweite (falsch eingegebene) Variable, der kein Wert zugewiesen ist. Denken Sie jetzt eine Sekunde nach. Wenn Sie langen Code schreiben und keine expliziten Optionsanweisungen verwenden, wird es schwierig sein, diesen Fehler zu verfolgen, bis Sie den gesamten Code erneut lesen.

Aber wenn die explizite Deklarationsoption aktiviert ist, erhalte ich eine Fehlermeldung, wenn ich diesen Code ausführe.

use-option-explicit
 Option Explicit Sub myMacro() Dim myText As String myText = "Puneet" MsgBox MyTxt End Sub

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert