Menu Sluiten

De verschillende soorten variabelen in VBA

variable vba macro

In VBA kun je met verschillende soorten data werken. Als je deze data op wilt slaan dan doe je dit in een variabele. Deze variabele heeft een naam die jij zelf mee kunt bepalen. Het is gebruikelijk om aan het begin van je code de variabele te declareren als een bepaald type. Dit is niet altijd noodzakelijk, maar het heeft wel een positief effect op de performance van je script. De reden hiervoor is dat VBA dan niet meer hoeft uit te zoeken wat voor type data het betreft. Het is voor VBA dan meteen duidelijk welke bewerking er uitgevoerd dient te worden met deze variabele. In dit artikel laat ik je zien welke types variabelen er binnen VBA bestaan. Wanneer je deze gebruikt en in welke gevallen je de variabele vooraf wel moet declareren als een bepaald type. 

De variant variabele in een macro

Op het moment dat je een variabele aanmaakt in je macro code zonder deze te declareren dan krijgt deze standaard het type variant mee. Het type variant betekent eigenlijk dat de waarde nog steeds elke soort data kan bevatten. VBA zal dan aan de hand van de data die opgeslagen wordt in deze variabele proberen te achterhalen welk type data het zal zijn. 

Als je bijvoorbeeld in een macro de variabele datum aanmaakt en je speelt vervolgens met F8 de code af tot het punt nadat je een waarde hebt toegekend aan de variabele.

Sub variantTest()

    datum = 3 - 5 - 2022

End Sub

Als je nu twee keer op F8 drukt dan zie je dat de End sub geel opgelicht staat. Nu kun je in het venster ‘lokale var.’ zien dat het type van de variabele datum op Variant/Integer staat. Dit komt omdat je op deze manier eigenlijk helemaal geen datum toewijst aan een variabele. Wat hij hier doet is een rekensom die op -2024 uitkomt. VBA ziet deze variabele dan ook als een Integer (getal zonder decimalen). 

Dit verandert op het moment dat aanhalingstekens om de getallen heen plaatst zoals in de onderstaande code.

Sub variantTest()

    datum = "03-05-2022"

End Sub

Wat hij dan doet is dat hij er het type Variant/String van maakt. Door de aanhalingstekens geef je eigenlijk aan dat deze waarde een stuk tekst is.

Op het moment dat je netjes een Dateserial functie gebruikt om een datum toe te kennen aan de variabele dan zal VBA de variabele ook daadwerkelijk herkennen als het type Variant\Date.

Sub variantTest()

    datum = DateSerial(2022, 4, 22)

End Sub

Variabelen declareren in een macro

Zoals ik al aan heb gegeven is het meestal niet nodig om een variabele te declareren in je script. VBA zal immers zelf ook het type kunnen bepalen. In sommige gevallen moet je echter wel je variabele declareren aan het begin van je script:

  1. Bij het aanroepen van een functie met input/output parameters die gedeclareerd zijn als type. Deze variabele dien je binnen je sub dan ook te declareren aan ditzelfde type.
  2. Als je andere datatypes dan tekst zoals getallen en datums wilt behandelen alsof het tekst is.
  3. Het kan voorkomen dat je een datum uit een tabel moet halen dat VBA deze niet herkend als datum maar als tekst. Door deze waarde op te slaan in een variabele gedeclareerd als Date weet je zeker dat VBA de waarde behandeld als een datum

Als je een variabele wilt declareren dan doe je dit standaard aan het begin van je code. Je schrijft dan de tekst ‘Dim’ gevolgd door de naam van je variabele en daarachter ‘as’ gevolgd door het type dat je wilt toewijzen. Als je de variabele datum ook daadwerkelijk als het type datum wilt declareren schrijf je ‘Dim datum as Date’. 

We hebben in dit artikel nu de types ‘string’ ‘integer’ en ‘date’ voorbij zien komen. Dit zijn verreweg de meest gebruikte types van een variabele. Naast deze types kun je echter ook nog de volgende soorten variabelen gebruiken:

  • single – deze gebruik je als je een waarde van een getal wilt opslaan tot 4 decimalen
  • double – deze gebruik je als je een waarde van een getal wilt opslaan tot 12 decimalen
  • Long – Als je hele grote getallen wilt opslaan zonder decimalen
  • Boolean – In dit type variabele kun je alleen ‘True’ of ‘False’ opslaan
  • Object – Dit is bijvoorbeeld een werkmap of werkblad

Ik hoop dat je nu een beter beeld hebt gekregen van het gebruik van variabelen in VBA en het wel of niet declareren binnen je code. Mocht je toch nog vragen hebben. Laat het weten in de reacties!

Heeft dit artikel je geholpen?

1 reactie

  1. Pingback:Werken met String functies in VBA -

Geef een reactie

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