Hoe gebruik ik een expliciete optieverklaring in vba?

Belangrijkste punten

  • Voor de optie Expliciet moet u alle variabelen declareren.
  • Dit is een declaratie die u kunt gebruiken bij de start van een module .
  • U kunt het handmatig invoeren of inschakelen via de opties.
  • U hoeft Option Explicit slechts één keer te gebruiken.
  • Het helpt u ook bij het identificeren van typefouten bij het gebruik van variabelen.

Wat is een expliciete VBA-optie

Option Explicit is een statement dat u aan het begin van een module kunt gebruiken om u te dwingen alle variabelen te declareren. Wanneer u deze verklaring toevoegt, toont VBA u een compilatiefout wanneer u de code uitvoert en wordt ook de variabele in de code gemarkeerd die u moet declareren.

vba-optie-expliciet

Wanneer u aan het begin van een module een expliciete optie toevoegt, voegt VBA daaronder een scheidingslijn toe, waarna u kunt beginnen met het schrijven van een procedure. En als u de expliciete declaratieoptie heeft en u een procedure uitvoert, controleert VBA of er een niet-gedeclareerde variabele is en krijgt u een foutmelding.

 Option Explicit Sub myMacro() a = 50 MsgBox a End Sub
vba-scheidingsregel toevoegen

Hierboven ziet u het bericht dat u krijgt als een variabele niet is gedeclareerd.

Schakel expliciete optie in VBA in

Volg deze stappen om een expliciete optie-instructie in een module in te schakelen.

  1. Open eerst Visual Basic Editor en klik in het menu Extra op Opties.
    activate-option-explicit-in-vba
  2. Ga daarna in de opties naar het tabblad Editor en vink het vakje “Variabeledeclaratie vereisen” aan.
    editor-tab-and-tick-mark
  3. Klik aan het einde op OK.
  4. Zodra u dit doet, voegt VBA elke keer dat u een nieuwe module toevoegt een expliciete optie toe.

Maar het voegt deze declaratie niet toe aan uw bestaande module, dus u moet ze handmatig één voor één aan elk van de bestaande modules toevoegen.

Hoe handmatig toevoegen?

Zoals ik al zei, moet de Option Explicit-instructie vóór de eerste moduleprocedure (Sub of Function) komen. U moet deze aangifte dus toevoegen boven de eerste procedure (gedeelte Algemene aangiften) en zorg ervoor dat u deze slechts één keer toevoegt.

algemene-verklaringen-gebied

Als u het binnen een procedure of tussen twee procedures toevoegt, toont VBA u een foutmelding wanneer u een van de modulecodes probeert uit te voeren.

vba-zal-je-een-fout laten zien

Voorbeelden (Waarom het gebruik van Option Explicit Statement een goede gewoonte is)

Ik zal u een voorbeeld laten zien om u te laten begrijpen waarom de Option Explicit-verklaring ten zeerste wordt aanbevolen. Kijk naar de volgende code.

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

In deze code heb ik een variabele “myText” gedeclareerd als een string en vervolgens de waarde van deze variabele ingesteld. En aan het einde gebruikte ik een berichtvenster waarin de waarde van de variabele werd weergegeven, maar als je goed kijkt, heb ik deze variabele verkeerd gespeld als “MyTxt” in plaats van “myText”.

gedeclareerde variabele

Als ik nu deze code uitvoer, wordt er een leeg berichtvenster weergegeven.

leeg berichtenvenster

Ik heb uw twee minuten nodig om u te helpen het echte probleem hier te begrijpen. Toen ik de naam van de variabele verkeerd typte, beschouwt VBA deze als een afzonderlijke variabele, en aangezien ik de expliciete optie-instructie niet gebruik, wordt er geen fout weergegeven.

typfout in de naam van de variabele

Dit is de reden waarom het berichtvenster de tweede (verkeerd getypte) variabele gebruikt waaraan geen waarde is toegewezen. Denk nu even na; Als u lange code schrijft en geen expliciete optie-instructies gebruikt, zal het moeilijk zijn om deze fout te traceren totdat u alle code opnieuw hebt gelezen.

Maar als de expliciete declaratieoptie AAN staat, krijg ik een foutmelding wanneer ik deze code uitvoer.

gebruik-optie-expliciet
 Option Explicit Sub myMacro() Dim myText As String myText = "Puneet" MsgBox MyTxt End Sub

Voeg een reactie toe

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *