Alles wat u moet weten over vba-variabelen

Variabele VBA

In VBA is een variabele als een opslagbox die zelf in uw systeem is opgeslagen, maar hij kan daar een waarde voor u opslaan en u kunt die waarde in uw code gebruiken en die waarde wijzigen als u dat wilt (zoals de naam al doet vermoeden: “VARIABLE ‘is iets waarvan de waarde niet vaststaat).

Om een variabele te declareren, moet u een eenvoudige procedure volgen:

  1. Gebruik in het begin het trefwoord ‘Dim’.
  2. Geef een naam op voor de variabele.
  3. Gebruik het trefwoord “As” achter de naam.
  4. Specificeer het “Gegevenstype” van de variabele op basis van de waarde die u eraan wilt toewijzen.

Hier hebben we de naam “startDate” gebruikt en het gegevenstype “Date” gespecificeerd. Nadat u een variabele heeft gedeclareerd, kunt u er een waarde aan toekennen.

 Dim startDate As Date startDate = “11/10/2018”

Wanneer u nu de startdatum in uw code gebruikt, gebruikt Excel de datum die u deze hebt opgegeven.

Gegevenstypen

In VBA zijn gegevenstypen in feite de gegevenstypen die u moet opgeven wanneer u een waarde in een variabele of constante opslaat. Als u bijvoorbeeld een datum in een variabele wilt opslaan, moet u die datumvariabele eerst als gegevenstype declareren.

Gegevenstypen uitgelegd

Hier is de volledige lijst met gegevenstypen die u in VBA kunt gebruiken.

Data type
Bytes gebruikt
Bereik van waarden
Bytes
1 byte
0 tot 255
Booleaans
2 bytes
Waar of niet waar
Geheel
2 bytes
-32,768 tot 32,767
Lang (geheel lang)
4 bytes
-2.147.483.648 tot 2.147.483.647
Alleen
4 bytes
-3,402823E38 tot -1,401298E-45 voor negatieve waarden; 1.401298E-45 tot 3.402823E38 voor positieve waarden
Dubbele
8 bytes
-1,79769313486231E308 tot -4,94065645841247E-324 voor negatieve waarden; 4.94065645841247E-324 tot 1.79769313486232E308 voor positieve waarden
Contant geld
8 bytes
-922.337.203.685.477,5808 tot 922.337.203.685.477.5807
Decimale
14 bytes
+/-79 228 162 514 264 337 593 543 950 335 zonder decimaal; +/-7,9228162514264337593543950335 met 28 decimalen rechts van de komma
Datum
8 bytes
1 januari 100 tot 31 december 9999
Voorwerp
4 bytes
Elke objectreferentie
Ketting (variabele lengte)
10 bytes + tekenreekslengte
0 tot ongeveer 2 miljard
Ketting (vaste lengte)
Ketenlengte
1 tot ongeveer 65.400
Variant (met cijfers)
16 bytes
Elke numerieke waarde tot het bereik van een Double
Variant (met karakters)
22 bytes + tekenreekslengte
Hetzelfde bereik als een string met variabele lengte
Gebruiker gedefinieerde
Verscheidene
Het bereik van elk element is hetzelfde als het bereik van zijn gegevenstype

Dit wordt sterk aanbevolen voor het declareren van het gegevenstype voor variabelen en constanten .

Wanneer u het gegevenstype voor een variabele of constante opgeeft, wordt de geldigheid van uw gegevens gegarandeerd en wordt voorkomen dat u een ongeldig gegevenstype invoert. Als u het gegevenstype weglaat, past VBA het gegevenstype Variant toe op uw variabele. Dit is het meest flexibel en VBA raadt niet wat het gegevenstype zou moeten zijn.

Tip: De beste manier om het opgeven van gegevenstypen niet over te slaan, is door de expliciete optie helemaal bovenaan de module te gebruiken voordat u code start.

Expliciet of impliciet

U kunt een variabele expliciet of impliciet declareren. Expliciete declaratie betekent dat voordat u een waarde aan een variabele toekent, u deze declareert en de waarde ervan instelt. Het VOORDEEL hiervan is dat u het definieert en dat het gegevenstype VBA de gegevens altijd in dat formaat opslaat.

Hier is een voorbeeld:

 Dim myDate As Date

Dus wanneer u waarde in deze VBA opslaat, wordt daar altijd het datumformaat op toegepast. Maar bij impliciete declaraties heb je geen last van deze expliciete declaratie. In plaats daarvan stelt u de waarde van de variabele in en gebruikt u deze in de code-instructie. In de impliciete declaratie slaat VBA de gegevens op in een variantvariabelentype omdat u het type niet hebt opgegeven.

Met andere woorden: als u alleen maar een variabele in uw code gebruikt zonder deze te declareren, is deze impliciet. Hieronder ziet u een voorbeeld van een impliciete verklaring:

 myDate = “11/10/1990”

Zo wijst u eenvoudig de waarde aan een variabele toe en gebruikt u deze in uw code-instructies. Als je het mij vraagt, is het altijd, ik bedoel altijd, beter om een variabele te declareren voordat je hem gebruikt. Dit is niet alleen een goede gewoonte, maar het zorgt er ook voor dat uw code sneller wordt uitgevoerd en gemakkelijker te begrijpen is.

Statische variabele

Nou, ik heb je verteld dat je in de variabele de waarde kunt veranderen, maar dit is iets anders. Met een normale variabele wordt, wanneer een procedure is voltooid, de waarde die in de variabele is opgeslagen uit het geheugen van VBA verwijderd. Als u deze waarde echter niet wilt verliezen, kunt u deze variabele statisch maken.

Om een variabele statisch te maken zodat deze de waarde behoudt, gebruikt u eenvoudigweg het trefwoord ‘Static’ in plaats van ‘Dim’.

Noem een variabele

Je kunt een variabele een naam geven (deze regels zijn ook van toepassing op de naam van de constante en de procedure) wat je maar wilt, maar je moet wel een paar regels volgen:

  • U kunt alfabetten, cijfers en enkele leestekens gebruiken, maar het eerste teken van de naam moet een alfabet zijn.
  • Spaties of punten zijn geen geldige tekens om in de naam te gebruiken, maar u kunt een onderstrepingsteken gebruiken om de naam leesbaar te maken.
  • U kunt geen speciale tekens in een naam gebruiken.
  • De lengte van een naam kan 254 tekens zijn, maar het gebruik van een naam is niet logisch.
  • Er zijn veel gereserveerde woorden, dit zijn woorden die u niet voor de naam kunt gebruiken. Als u een van deze woorden probeert te gebruiken, krijgt u een foutmelding.
  • VBA maakt geen onderscheid tussen cases.

Domein

Op dit punt kent u de procedures en welke procedure in welke situatie nuttig is. Ook leert u over variabelen en hoe u hun gegevenstypen kunt definiëren.

Het volgende belangrijke ding is om de reikwijdte te begrijpen, wat beschikbaarheid betekent. Dit is waar het kan worden gebruikt. Wanneer u een variabele definieert, bepaalt het bereik of u deze buiten de hostprocedure kunt gebruiken of niet. Er zijn drie manieren om variabele bereiken te definiëren (constant en zelfs met de hele procedure).

  1. Procedureniveau: u kunt een variabele alleen gebruiken in dezelfde procedure als waarin u deze declareert.
  2. Moduleniveau (privé): maakt een variabele toegankelijk vanuit alle procedures in een module.
  3. Moduleniveau (openbaar): Maakt een variabele toegankelijk vanuit alle procedures in alle modules.

Het standaardbereik van een variabele is de procedure (procedureniveau) waarin deze variabele wordt gedeclareerd.

Maar laat me iets uit de echte wereld met je delen.

Ik werk in een coworkingruimte en mijn zitplaats bevindt zich op de eerste verdieping van het gebouw met drie verdiepingen. Ik zit bijna elke dag op dezelfde stoel. Dus als u een variabele declareert met een bereik op procedureniveau, kunt u deze alleen binnen dezelfde procedure gebruiken. Net zoals ik elke dag op dezelfde stoel op dezelfde verdieping zit. Maar ik zal je meer vertellen: ook al zit ik op de eerste verdieping, ik kan ook elke stoel op de andere verdiepingen gebruiken. En in de onderstaande momentopname hebben we de variabele “mijnNaam” bovenaan de module gedeclareerd met behulp van het trefwoord Private voordat we een procedure startten, en ik gebruikte deze in alle drie de codes. Beschouw deze module als een gebouw met verschillende verdiepingen (Procedures) en aangezien u de variabele al aan het begin van de module heeft gedeclareerd, kunt u elk van de procedures in deze module gebruiken. Dit wordt scoping op privémoduleniveau genoemd. Dit is het laatste: mijn kantoor heeft vestigingen in verschillende steden in het hele land en als ik daarheen ga, kan ik naar die kantoren gaan en een van de stoelen gebruiken als ik dat wil. Dus als u verschillende modules in uw werkmap heeft, kunt u in al deze modules één variabele gebruiken door deze als Openbaar te declareren.

Voeg een reactie toe

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