Variabelen

Inleiding

In dit artikel de minimale info over variabelen en object variabelen. Wat het zijn, hoe je ze declareert en hoe je ze instelt. Verder een belangrijke tip over de standaardwaarde van variabelen waar je later heel veel profeit van zult hebben.

Wat zijn variabelen?

Kort gezegd zijn variabelen niets anders dan door ons gedefinieerde namen waar we een waarde in kunnen opslaan. Zo kunnen we met deze namen berekeningen maken en ze gebruiken om naar objecten te verwijzen. Nu snap je wel dat peren geen appels zijn, althans, ik hoop voor je dat je dat onderscheid kunt maken. Dit kan belachelijk klinken, maar ik ben toch écht weleens een database tegengekomen van een handelaar in groenten. Tot mijn grote verbazing werden alle soorten groenten bij elkaar opgeteld. Appels bij peren etc., en dat is natuurlijk zo krom als een banaan . Je kan VBA iets laten doen, maar een cruciale factor is natuurlijk wel dat we zelf logisch moeten blijven nadenken. Als je nu begrijpt dat een peer geen banaan is, dan ben je al een heel eind op de goede weg. Want eigenlijk is dat het hele eieren eten. Groente is een gegeven, maar een peer is een ander soort fruit (gegevenstype) is dan een banaan.

Om berekeningen te kunnen maken moeten we dus rekening houden met het juiste gegevenstype. De informatie die je opslaat, sla je op in een variabele waarvoor het juiste gegevenstype is gedeclareerd.

Een variabele declareren

Het declareren van een variabele wil zeggen dat een naam voor de variabele wordt ingesteld. De waarde toekennen of wijzigen kan op verschillende locaties plaatsvinden. In het volgende voorbeeld zijn variabelen gedeclareerd binnen de procedure. Hier doe je dat doorgaans altijd met het statement Dim. De naam kiezen we zelf, maar het is handig om bij elk gegevenstype een bepaalde prefix aan te houden. Met As Integer, As Long etc. kennen we het type toe. Met intX = 100 hebben we de variabele ingesteld op de gewenste waarde, namelijk 100.

In dit eenvoudige voorbeeld houden we het bij de meest gebruikte gegevenstypen. Elk gegevenstype heeft een standaardwaarde. Afhankelijk van de situatie is het dus niet altijd nodig een waarde in te stellen. De standaardwaarde van deze voorbeelden zijn:

  • Integer: 0
  • Long: 0
  • String: "" (een lege tegenreeks met een lengte van 0 karakters)
  • Variant: Null (Null betekent niets, de waarde is ongedefinieerd, Null is dus iets anders dan "" of 0)
  • Boolean: False (een Boolean kan de waarde True of False hebben)

Tip Als je alleen al onthoud dat de meeste variabelen een standaardwaarde hebben, dan heb je daar straks veel profeit van.

Sub ProcName()

    Dim intX    As Integer

    Dim lngX    As Long

    Dim strX    As String

    Dim varX    As Variant

    Dim blnX    As Boolean

    

    On Error GoTo Bye_Err

    

    intX = 100

    lngX = 100

    

Bye_End:

    Exit Sub

Bye_Err:

    MsgBox MsgErr, vbCritical, MT

    Resume Bye_End

End Sub

Een object variabele instellen

Een ander belangrijk aspect bij variabelen, zijn object variabelen. Een object variabele gebruik je bijvoorbeeld om een Word document, een Access formulier of een bereik van cellen in Excel in te stellen. Elk soort object beschikt over verschillende methoden en eigenschappen (zo heeft een appel wel een klokhuis, maar een banaan niet). Vaak willen we iets doen met een object en dan moeten we er naar verwijzen. Dat kan op verschillende manieren, maar als je een object variabele instelt, kan je gebruik maken van de methoden en eigenschappen van het object.

Bij een gewone variabele moet de variabele op het juiste gegevenstype zijn gedeclareerd. Bij een object variabele moet het juiste object type zijn gedeclareerd.

In het volgende voorbeeld is (in Word) de variabele doc gedecareerd. Vervolgens wordt er een object variabele van gemaakt door deze in te stelen met het statement Set. En deze object variabele betreft het actieve document. Met de opdracht Debug.Print wordt de waarde van de eigenschap Saved geschreven in het venster Direct (voor meer, zie VBE verkennen). Omdat we een object variabele hebben ingesteld, kunnen we de methoden en eigenschappen van dat object benaderen.

Bij een object variabele gebruik je normaalgesproken geen prefix zoals bij gewone variabelen. Dan wordt het (meestal) gewoon doc voor een Word document, rng voor een Range in Excel, frm voor een formulier in Access etc. Tenzij je een onderscheid moet maken, en dan gaat de voorkeur uit naar doc2, rng2, frm2 of frmDial (voor een dialoogvenster). In de voorbeelden kom je het straks voldoende tegen zodat het duidelijk is. En je weet, dat het vrij is namen zelf te bedenken, maar een consistentie is gewoon makkelijker dan steeds zomaar wat te doen. Je code kan een zooitje worden of een goed georganiseerd en consitent geheel.

Tip Wanneer je na de object variabele een punt typt, verschijnt er een lijst met methoden en eigenschappen van het object. Dit wordt IntelliSense genoemd. De lijst kan verschijnen omdat we VBA hebben verteld dat het om (in dit geval) een Document object gaat.

Sub ProcName()

    Dim doc As Document

    

    On Error GoTo Bye_Err

    

    Set doc = ActiveDocument

    Debug.Print doc.Saved

    

Bye_End:

    Exit Sub

Bye_Err:

    MsgBox MsgErr, vbCritical, MT

    Resume Bye_End

End Sub

Cursussen