Variabelen en constanten in Excel-macro's begrijpen

In dit artikel leert u wat constanten en variabelen in macro's zijn, waar ze kunnen worden gebruikt en wat het belangrijkste verschil is tussen verschillende gegevenstypen. Er zal ook worden onthuld waarom constanten nodig zijn, als je gewoon een variabele kunt schrijven en deze nooit kunt wijzigen.

Net als andere programmeertalen kunnen gegevens worden opgeslagen in variabelen of constanten (beide worden ook vaak datacontainers genoemd). Dit is het belangrijkste verschil tussen deze concepten. De eerste kan veranderen, afhankelijk van wat er in het programma gebeurt. Constanten worden op hun beurt eenmaal ingesteld en veranderen hun waarde niet.

Constanten kunnen handig zijn als u dezelfde grote waarde meerdere keren moet gebruiken. In plaats van het nummer te kopiëren, kunt u gewoon de naam van de constante schrijven. U kunt bijvoorbeeld de constante "Pi" gebruiken om Pi op te slaan, wat een constante waarde is. Het is erg groot en elke keer is het vrij moeilijk om het te schrijven of te zoeken en te kopiëren. En dus is het voldoende om twee tekens te schrijven, en de omgeving gebruikt automatisch het gewenste nummer.

De Excel-gebruiker moet variabelen declareren als hij de daarin opgeslagen waarde van tijd tot tijd moet wijzigen. U kunt bijvoorbeeld een variabele met de naam sVAT_Rate instellen, die het huidige btw-tarief voor het product opslaat. Als het verandert, kun je het snel corrigeren. Dit is vooral handig voor degenen die zaken doen in de Verenigde Staten, waar sommige goederen mogelijk helemaal niet aan btw zijn onderworpen (en deze belasting verschilt ook van staat tot staat).

Gegevenstypen

Elke gegevenscontainer kan een van verschillende typen zijn. Hier is een tabel die de standaardtypes van verwerkte informatie beschrijft. Er zijn er veel, en het kan voor een beginner in eerste instantie lijken dat ze elkaar herhalen. Maar dit is een illusoir gevoel. Lees verder om erachter te komen waarom het specificeren van het juiste gegevenstype zo belangrijk is.

Het wordt niet aanbevolen om een ​​gegevenstype te gebruiken dat meer geheugenruimte in beslag neemt voor kleine aantallen. Voor het getal 1 is het bijvoorbeeld voldoende om het type Byte te gebruiken. Dit zal een positief effect hebben op de prestaties van de uitvoerbare module, vooral op zwakke computers. Maar het is belangrijk om hier niet te ver te gaan. Als u een gegevenstype gebruikt dat te compact is, past een te grote waarde er mogelijk niet in.

Constanten en variabelen declareren

Het gebruik van een gegevenscontainer zonder deze eerst aan te geven, wordt sterk afgeraden. Dan kunnen zich een aantal problemen voordoen, om te voorkomen dat het nodig is om een ​​paar kleine regels code te schrijven met opsomming van variabelen of constanten.

Om een ​​variabele te declareren, wordt het Dim-statement gebruikt. Bijvoorbeeld als volgt:

Dim variabele_naam als geheel getal

Variabele_Naam is de naam van de variabele. Vervolgens wordt de As-operator geschreven, waarmee het gegevenstype wordt aangegeven. In plaats van de strings "Variable_Name" en "Integer", kunt u uw eigen naam en gegevenstype invoegen.

Constanten kunnen ook worden gedeclareerd, maar u moet eerst hun waarde opgeven. Een van de opties is:

Const iMaxCount = 5000

Eerlijkheidshalve kun je in sommige gevallen doen zonder een variabele te declareren, maar in dit geval krijgen ze automatisch het type Variant toegewezen. Dit wordt echter niet aanbevolen om de volgende redenen:

  1. Variant wordt veel langzamer verwerkt en als er veel van dergelijke variabelen zijn, kan de informatieverwerking op zwakke computers aanzienlijk worden vertraagd. Het lijkt erop dat die seconden zullen beslissen? Maar als je een groot aantal regels code moet schrijven, en het dan ook nog eens op zwakke computers moet laten draaien (die nog steeds verkocht worden, aangezien moderne kantoorsuites veel RAM-geheugen nodig hebben), kun je het werk volledig stopzetten. Er zijn gevallen waarin ondoordacht schrijven van macro's leidde tot het bevriezen van smartbooks die een kleine hoeveelheid RAM hebben en niet zijn ontworpen om complexe taken uit te voeren. 
  2. Drukfouten in namen zijn toegestaan, wat kan worden voorkomen door de instructie Option Explicit te gebruiken, waarmee u een niet-gedeclareerde variabele kunt vinden, als die wordt gevonden. Dit is een gemakkelijke manier om fouten op te sporen, aangezien de kleinste typefout ervoor zorgt dat de interpreter de variabele niet kan identificeren. En als u de variabele declaratiemodus inschakelt, staat de interpreter u eenvoudigweg niet toe de macro uit te voeren als er gegevenscontainers worden gevonden die niet helemaal aan het begin van de module zijn gedeclareerd.
  3. Voorkom fouten die worden veroorzaakt door variabele waarden die niet overeenkomen met het gegevenstype. Normaal gesproken levert het toewijzen van een tekstwaarde aan een integer-variabele een fout op. Ja, aan de ene kant wordt een generiek type toegekend zonder aangifte, maar als ze vooraf worden gedeclareerd, kunnen willekeurige fouten worden voorkomen.

Daarom wordt het ondanks alles ten zeerste aanbevolen om alle variabelen in Excel-macro's te declareren.

Er is nog iets om in gedachten te houden bij het declareren van variabelen. Het is mogelijk om geen waarden toe te kennen aan een variabele bij het declareren, maar krijgt in dit geval een standaardwaarde. Bijvoorbeeld:

  1. Lijnen worden leeg gemaakt.
  2. De getallen krijgen de waarde 0.
  3. Variabelen van het type Boolean worden aanvankelijk als onwaar beschouwd.
  4. De standaarddatum is 30 december 1899.

U hoeft bijvoorbeeld de waarde 0 niet toe te wijzen aan een integer-variabele als er eerder geen waarde is opgegeven. Ze heeft dit nummer al.

Optie Expliciete verklaring

Met deze instructie kunt u alle variabelen declareren die in de VBA-code worden gebruikt en de aanwezigheid van niet-aangegeven containers bepalen voordat de code wordt uitgevoerd. Om deze functie te gebruiken, schrijft u gewoon een regel Option Explicit-code helemaal bovenaan de macrocode.

Als u deze verklaring elke keer in uw code moet opnemen, kunt u dit doen met een speciale instelling in de VBA-editor. Om deze optie in te schakelen, moet u:

  1. Ga langs het pad naar de ontwikkelomgeving – Extra > Opties.
  2. In het venster dat hierna opent, opent u het tabblad Editor.
  3. En tot slot, vink het vakje aan naast het item Variabeledeclaratie vereisen.

Klik na het voltooien van deze stappen op de knop "OK". 

Dat is alles, bij het schrijven van elke nieuwe macro wordt deze regel automatisch bovenaan de code ingevoegd.

Bereik van constanten en variabelen

Elke variabele of constante heeft slechts een beperkte reikwijdte. Het hangt ervan af waar je het declareert.

Stel we hebben een functie Totale prijs(), en het gebruikt de variabele sVAT_Tarief. Afhankelijk van de positie in de module zal deze een ander bereik hebben:

Optie Expliciet

Dim sVAT_Rate als single

Functie Total_Cost() As Double

.

.

.

End Function

Als een variabele bovenaan een module zelf wordt gedeclareerd, wordt deze door die module verspreid. Dat wil zeggen, het kan door elke procedure worden gelezen.

Bovendien, als een van de procedures de waarde van de variabele heeft gewijzigd, zal de volgende ook deze gecorrigeerde waarde lezen. Maar in andere modules wordt deze variabele nog steeds niet gelezen.

Optie Expliciet

Functie Total_Cost() As Double

Dim sVAT_Rate als single

   .

   .

   .

End Function

In dit geval wordt de variabele gedeclareerd in de procedure en zal de interpreter een foutmelding geven als deze in een andere procedure wordt gebruikt.

Als u wilt dat de variabele door andere modules wordt gelezen, moet u het trefwoord Public gebruiken in plaats van het Dim-trefwoord. Op dezelfde manier kunt u het bereik van een variabele beperken tot alleen de huidige module door de instructie Public te gebruiken, die is geschreven in plaats van het woord Dim.

U kunt het bereik van constanten op een vergelijkbare manier instellen, maar het sleutelwoord hier wordt samen met de Const-operator geschreven.

Hier is een tabel met een goed voorbeeld van hoe het werkt met constanten en variabelen.

Optie Expliciet

Publieke sVAT_Rate als single

Publieke Const iMax_Count = 5000

In dit voorbeeld ziet u hoe het trefwoord Public wordt gebruikt om een ​​variabele te declareren en wat u in de Visual Basic-editor moet schrijven om een ​​openbare constante te declareren. De reikwijdte van deze waardecontainers is van toepassing op alle modules.
Optie Expliciet

Privé sVAT_Rate als single

Privé Const iMax_Count = 5000

Hier worden variabelen en constanten gedeclareerd met het sleutelwoord Private. Dit betekent dat ze alleen binnen de huidige module kunnen worden bekeken en dat procedures in andere modules ze niet kunnen gebruiken.

Waarom constanten en variabelen nodig zijn

Door het gebruik van constanten en variabelen vergroot je de begrijpelijkheid van de code. En als beginners in het algemeen geen vragen hebben over waarom variabelen nodig zijn, dan zijn er veel onduidelijkheden over de noodzaak van constanten. En deze vraag lijkt op het eerste gezicht heel logisch. U kunt een variabele immers één keer declareren en nooit meer wijzigen.

Het antwoord blijkt ergens in hetzelfde vlak te liggen als met betrekking tot het gebruik van datatypes die een grote ruimte in het geheugen innemen. Als we te maken hebben met een groot aantal variabelen, kunnen we per ongeluk een bestaande container wijzigen. Als de gebruiker voorschrijft dat een bepaalde waarde nooit verandert, dan regelt de omgeving dit automatisch.

Dit is vooral belangrijk wanneer de macro door meerdere programmeurs is geschreven. Je weet misschien dat een variabele niet mag veranderen. En de ander niet. Als u de Const-operator opgeeft, weet een andere ontwikkelaar dat deze waarde niet verandert.

Of, als er een constante is met één naam, en de variabele heeft een andere, maar vergelijkbare naam. De ontwikkelaar kan ze eenvoudig verwarren. Een variabele die niet hoeft te worden gewijzigd, wordt bijvoorbeeld Variabele11 genoemd en een andere die kan worden bewerkt, wordt Variabele1 genoemd. Een persoon kan automatisch, bij het schrijven van code, per ongeluk een extra eenheid overslaan en het niet opmerken. Als gevolg hiervan wordt de container voor waarden gewijzigd, die niet mag worden aangeraakt.

Of de ontwikkelaar kan zelf vergeten welke variabelen hij kan aanraken en welke niet. Dit gebeurt vaak wanneer de code enkele weken wordt geschreven en de code groot wordt. Gedurende deze tijd is het heel gemakkelijk om zelfs te vergeten wat deze of gene variabele betekent.

Ja, u kunt in deze situatie opmerkingen maken, maar is het niet eenvoudiger om het woord Const op te geven?

Conclusies

Variabelen zijn een essentieel onderdeel van macroprogrammering, waarmee u complexe bewerkingen kunt uitvoeren, van berekeningen tot het informeren van de gebruiker over bepaalde gebeurtenissen of het specificeren van specifieke waarden in de cellen van een spreadsheet.

Er moeten constanten worden gebruikt als de ontwikkelaar zeker weet dat de inhoud van deze containers in de toekomst niet zal veranderen. Het wordt aanbevolen om in plaats daarvan geen variabelen te gebruiken, omdat het mogelijk is om per ongeluk een fout te maken.

Laat een reactie achter