En tildelingssætning er en VBA-sætning, der tildeler resultatet af et udtryk til en variabel eller et objekt. Excels hjælpesystem definerer udtrykket udtryk som
"... en kombination af nøgleord, operatorer, variabler og konstanter, der giver en streng, et tal eller et objekt. Et udtryk kan bruges til at udføre en beregning, manipulere tegn eller teste data."
Meget af dit arbejde i VBA involverer at udvikle (og fejlfinde) udtryk. Hvis du ved, hvordan du opretter formler i Excel, har du ingen problemer med at skabe udtryk. Med en regnearksformel viser Excel resultatet i en celle. Et VBA-udtryk kan på den anden side tildeles til en variabel.
Eksempler på opgaveerklæring
I opgaveeksemplerne, der følger, er udtrykkene til højre for lighedstegnet:
x = 1
x = x + 1
x = (y * 2) / (z * 2)
Huspris = 375.000
FileOpen = Sand
Range(“TheYear”).Værdi = 2016
Udtryk kan være lige så komplekse, som du har brug for dem; brug linjefortsættelsestegnet (et mellemrum efterfulgt af en understregning) for at gøre lange udtryk lettere at læse.
Ofte bruger udtryk funktioner: VBAs indbyggede funktioner, Excels regnearksfunktioner eller funktioner, som du udvikler med VBA.
Om det lighedstegn
Som du kan se i det foregående eksempel, bruger VBA lighedstegnet som sin tildelingsoperator. Du er sikkert vant til at bruge et lighedstegn som et matematisk symbol for lighed. Derfor kan en opgaveerklæring som følgende få dig til at hæve øjenbrynene:
z = z + 1
I hvilket skøre univers er z lig med sig selv plus 1? Svar: Intet kendt univers. I dette tilfælde øger tildelingssætningen (når den udføres) værdien af z med 1. Så hvis z er 12, vil udførelse af sætningen gøre z lig med 13. Husk blot, at en tildeling bruger lighedstegnet som en operator, ikke et symbol af ligestilling.
Glatte operatører
Operatører spiller store roller i VBA. Udover ligetegnsoperatøren tilbyder VBA flere operatører. Disse burde være bekendt for dig, fordi de er de samme operatorer, der bruges i regnearksformler (undtagen Mod-operatoren).
Fungere |
Operatør symbol |
Tilføjelse |
+ |
Multiplikation |
* |
Division |
/ |
Subtraktion |
– |
Eksponentiering |
^ |
Sammenkædning af strenge |
& |
Heltalsdivision (resultatet er altid et heltal) |
|
Modulo aritmetik (returnerer resten af en divisionsoperation
) |
Mod |
Når du skriver en Excel-formel, laver du modulo-aritmetik ved at bruge MOD-funktionen. For eksempel returnerer følgende formel 2 (resten, når du dividerer 12 med 5):
=MOD(12;5)
I VBA bruges Mod-operatoren sådan her (og z har en værdi på 2):
z = 12 Mod 5
Udtrykket sammenkædning er programmør taler for "forenes sammen." Således, hvis du sammenkæder strenge, kombinerer du strenge for at lave en ny og forbedret streng.
VBA tilbyder også et komplet sæt af logiske operatører. Af disse er Not, And og Or oftest brugt.
Operatør |
Hvad det gør |
Ikke |
Udfører en logisk negation på et udtryk |
Og |
Udfører en logisk konjunktion på to udtryk |
Eller |
Udfører en logisk disjunktion på to udtryk |
Xor |
Udfører en logisk udelukkelse på to udtryk |
Eqv |
Udfører en logisk ækvivalens på to udtryk |
Imp |
Udfører en logisk implikation på to udtryk |
Forrangsrækkefølgen for operatorer i VBA er nøjagtig den samme som i Excel-formler. Eksponentiering har den højeste forrang. Derefter kommer multiplikation og division, efterfulgt af addition og subtraktion. Du kan bruge parenteser til at ændre den naturlige prioritetsrækkefølge, så det, der er klemt i parentes, kommer før enhver operator. Tag et kig på denne kode:
x = 3
y = 2
z = x + 5 * y
Når den foregående kode udføres, hvad er værdien af z? Hvis du svarede 13, får du en guldstjerne, der beviser, at du forstår begrebet operatørforrang. Hvis du svarede 16, så læs dette: Multiplikationsoperationen (5 * y) udføres først, og det resultat lægges til x.
Mange programmører har en tendens til at bruge parenteser, selv når de ikke er påkrævet. For eksempel, i det virkelige liv kunne den sidste opgaveerklæring skrives sådan:
z = x + (5 * y)
Vær ikke genert over at bruge parenteser, selvom de ikke er påkrævet - især hvis det gør din kode lettere at forstå. VBA er ligeglad med, om du bruger ekstra parentes.