En tilordningssetning er en VBA-setning som tildeler resultatet av et uttrykk til en variabel eller et objekt. Excels hjelpesystem definerer begrepet uttrykk som
"... en kombinasjon av nøkkelord, operatorer, variabler og konstanter som gir en streng, tall eller objekt. Et uttrykk kan brukes til å utføre en beregning, manipulere tegn eller teste data."
Mye av arbeidet ditt i VBA involverer å utvikle (og feilsøke) uttrykk. Hvis du vet hvordan du lager formler i Excel, har du ingen problemer med å lage uttrykk. Med en regnearkformel viser Excel resultatet i en celle. Et VBA-uttrykk, derimot, kan tilordnes til en variabel.
Eksempler på oppgaver
I oppgaveeksemplene som følger er uttrykkene til høyre for likhetstegnet:
x = 1
x = x + 1
x = (y * 2) / (z * 2)
Huskostnad = 375 000
FileOpen = Sant
Range(“TheYear”). Verdi = 2016
Uttrykk kan være så komplekse som du trenger at de skal være; bruk linjefortsettelsestegnet (et mellomrom etterfulgt av et understrek) for å gjøre lange uttrykk lettere å lese.
Ofte bruker uttrykk funksjoner: VBAs innebygde funksjoner, Excels regnearkfunksjoner eller funksjoner du utvikler med VBA.
Om det likhetstegnet
Som du kan se i det foregående eksempelet, bruker VBA likhetstegnet som sin tilordningsoperatør. Du er sannsynligvis vant til å bruke et likhetstegn som et matematisk symbol for likhet. Derfor kan en oppgaveerklæring som følgende føre til at du hever øyenbrynene:
z = z + 1
I hvilket sprø univers er z lik seg selv pluss 1? Svar: Ikke noe kjent univers. I dette tilfellet øker tilordningssetningen (når den utføres) verdien av z med 1. Så hvis z er 12, blir z lik 13 ved å utføre setningen. Bare husk at en tilordning bruker likhetstegnet som en operator, ikke et symbol av likestilling.
Jevne operatører
Operatører spiller store roller i VBA. Foruten likhetstegn-operatøren, tilbyr VBA flere operatører. Disse bør være kjent for deg fordi de er de samme operatorene som brukes i regnearkformler (bortsett fra Mod-operatoren).
Funksjon |
Operatørsymbol |
Addisjon |
+ |
Multiplikasjon |
* |
Inndeling |
/ |
Subtraksjon |
– |
Eksponentiering |
^ |
Strengesammenkobling |
& |
Heltallsdivisjon (resultatet er alltid et heltall) |
|
Modulo aritmetikk (returnerer resten av en divisjonsoperasjon
) |
Mod |
Når du skriver en Excel-formel, gjør du modulo-aritmetikk ved å bruke MOD-funksjonen. For eksempel returnerer følgende formel 2 (resten når du deler 12 på 5):
=MOD(12;5)
I VBA brukes Mod-operatoren slik (og z har en verdi på 2):
z = 12 Mod 5
Begrepet sammenknytting er programmerer snakker for "gå sammen." Derfor, hvis du setter sammen strenger, kombinerer du strenger for å lage en ny og forbedret streng.
VBA tilbyr også et komplett sett med logiske operatører. Av disse er Not, And og Or oftest brukt.
Operatør |
Hva det gjør |
Ikke |
Utfører en logisk negasjon på et uttrykk |
Og |
Utfører en logisk konjunksjon på to uttrykk |
Eller |
Utfører en logisk disjunksjon på to uttrykk |
Xor |
Utfører en logisk ekskludering på to uttrykk |
Ekv |
Utfører en logisk ekvivalens på to uttrykk |
Imp |
Utfører en logisk implikasjon på to uttrykk |
Forrangsrekkefølgen for operatorer i VBA er nøyaktig den samme som i Excel-formler. Eksponentiering har høyest prioritet. Multiplikasjon og divisjon kommer deretter, etterfulgt av addisjon og subtraksjon. Du kan bruke parenteser til å endre den naturlige prioritetsrekkefølgen, slik at det som er satt i parentes, kommer foran en hvilken som helst operator. Ta en titt på denne koden:
x = 3
y = 2
z = x + 5 * y
Når den foregående koden kjøres, hva er verdien av z? Hvis du svarte 13, får du en gullstjerne som beviser at du forstår konseptet med operatørprioritet. Hvis du svarte 16, les dette: Multiplikasjonsoperasjonen (5 * y) utføres først, og det resultatet legges til x.
Mange programmerere har en tendens til å bruke parenteser selv når de ikke er nødvendige. For eksempel, i det virkelige liv kan den siste oppgaveerklæringen skrives slik:
z = x + (5 * y)
Ikke vær sjenert for å bruke parenteser selv om de ikke er påkrevd - spesielt hvis det gjør koden lettere å forstå. VBA bryr seg ikke om du bruker ekstra parenteser.