VBA-skolen 3 – Variabler og konstanter

I dette afsnit af VBA-skolen, skal vi se nærmere på hvad konstanter og variabler er, og hvad du kan bruge dem til i VBA.
I sidste afsnit af VBA-skolen prøvede du at lave dit første program med VBA. Et simpelt program, hvor der kom en dialogboks når du trykkede på en knap. I dette afsnit skal vi se på noget lidt mere teknisk, men meget fundamentalt at vide noget om, hvis du for alvor vil bruge VBA. Vi skal se på konstanter og variabler i VBA.
Konstanter og variabler er navne der koder for en værdi, dvs. VBA-koder som når du bruger dem repræsenterer en anden værdi. Den værdi kan være et tal, en tekststreng, en dato, et objekt – ja, kun fantasien sætter grænserne.
Forskellen mellem konstanter og variabler er at konstanter har en fast værdi, mens variabler kan variere i værdien.

Datatyper

Den værdi en variabel eller konstant indeholder, kan være af forskellige datatyper. Vi har allerede været inde på at det kan være tal, tekst, datoer osv. Men der findes faktisk mange slags tal, der har lidt forskellige egenskaber. Lad os lige gennemgå nogle af dem:

  • En byte er en positiv talværdi mellem 0 og 255. Den fylder ca. 1 byte i hukommelsen.
  • En boolean er en værdi der enten kan være sand (true) eller falsk (false). Den fylder ca. 2 bytes.
  • En integer er en heltalsværdi mellem -32768 og +32768. Den fylder ca. 2 bytes.
  • En long er også en heltalsværdi, men kan være mellem -2.147.483.648 og +2.147.483.648. Den fylder ca. 4 bytes.
  • En single er et decimaltal mellem -3,4e38 og +3,4e38 og fylder ca. 4 bytes.
  • En double er et decimaltal mellem -1,8e308 og +1,8e308 og fylder ca. 8 bytes.
  • En currency er et decimaltal mellem -922.337.203.685.477,5808 og
    +922.337.203.685.477,5808 og fylder ca. 8 bytes.
  • En date er en dato der kan være fra den 1. januar år 100 til den 31. december 9999. Den fylder ca. 8 bytes.
  • En string er en tekststreng der kan have op til 65.500 tegn, hvis den defineres som en konstant. Hvis den defineres som variabel, kan den have ca. 2 milliarder tegn.

Jeg har markeret dem med rødt, som er de vigtigste og som du bør kende til. De andre er mindre vigtige. Som du kan se handler de forskellige datatyper især over deres begrænsninger for hvad de kan indeholde og den mængde hukommelse de optager.

Erklær en variabel eller konstant

Det er god stil at erklære en variabel eller konstant inden du bruger den. Det er godt nok frivilligt om du gør det i VBA, men det er god kodestil. At erklære den, vil sige at du definerer hvilken datatype en variabel og konstant er, inden du bruger den.
Du erklærer en variabel med koden:

Din [Navn] As [Datatype]

Hvor [Navn] er navnet på din variabel eller konstant og [Datatype] er den datatype du har valgt. Du kunne for eksempel skrive Dim x As integer, hvorved du har erklæret variablen x som er et heltal.
Hvis du skal erklære en konstant, skal du tildele den en værdi med det samme og den kan herefter ikke ændre sig. Du bruger her koden:

Const [Navn] = [Værdi]

Eksempel

Nu vender vi lige tilbage til eksemplet fra afsnit 2 i VBA-skolen. Start nu med at erklære variablen x som et heltal. Sæt herefter værdien x til 365 og lav en dialogboks der skriver hvor mange dage der er på et år, idet værdien fra x hentes ind.

Public Sub Test()
Dim x As Integer
x = 365
MsgBox "Der er " & x & " dage på et år"
End Sub

Bemærk her at dialogboksen viser først en tekststreng der hedder “Der er “. Den kombinerer den med x som du har erklæret, og herefter en ny tekststreng der hedder ” dage på et år”. & er altså noget der sætter flere kodestykker sammen.
Gå nu ud og tryk på knappen og se resultatet:

Det var lige lidt til dette afsnit af VBA-skolen, hvor du lærte om variabler og konstanter. I praksis er det nok mest variabler du kommer til at bruge. I næste afsnit skal vi se nærmere på arrays.

0 0 votes
Article Rating

Andreas Andersen

Forfatter og grundlægger af IT-blogger.dk, der har blogget om IT-emner siden 2012. Findes på Mastodon på @aphandersen@ansico.dk

You may also like...

Abonner
Giv besked ved
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x