En tilldelningssats är en VBA-sats som tilldelar resultatet av ett uttryck till en variabel eller ett objekt. Excels hjälpsystem definierar termen uttryck som
"... en kombination av nyckelord, operatorer, variabler och konstanter som ger en sträng, ett tal eller ett objekt. Ett uttryck kan användas för att utföra en beräkning, manipulera tecken eller testdata."
Mycket av ditt arbete i VBA handlar om att utveckla (och felsöka) uttryck. Om du vet hur man skapar formler i Excel har du inga problem med att skapa uttryck. Med en kalkylbladsformel visar Excel resultatet i en cell. Ett VBA-uttryck, å andra sidan, kan tilldelas en variabel.
Exempel på uppdragsbeskrivningar
I uppdragsexemplen som följer är uttrycken till höger om likhetstecknet:
x = 1
x = x + 1
x = (y * 2) / (z * 2)
Huskostnad = 375 000
FileOpen = Sant
Range(“TheYear”).Värde = 2016
Uttryck kan vara så komplexa som du behöver dem vara; använd linjefortsättningstecknet (ett mellanslag följt av ett understreck) för att göra långa uttryck lättare att läsa.
Ofta använder uttryck funktioner: VBA:s inbyggda funktioner, Excels kalkylbladsfunktioner eller funktioner som du utvecklar med VBA.
Om det där likhetstecknet
Som du kan se i föregående exempel använder VBA likhetstecknet som sin tilldelningsoperator. Du är förmodligen van vid att använda ett likhetstecken som en matematisk symbol för jämlikhet. Därför kan ett uppdrag som följande få dig att höja på ögonbrynen:
z = z + 1
I vilket galet universum är z lika med sig själv plus 1? Svar: Inget känt universum. I det här fallet ökar tilldelningssatsen (när den exekveras) värdet på z med 1. Så om z är 12 blir z lika med 13 när satsen körs. Kom bara ihåg att en tilldelning använder likhetstecknet som en operator, inte en symbol av jämlikhet.
Smidiga operatörer
Operatörer spelar stora roller i VBA. Förutom likhetstecken-operatören tillhandahåller VBA flera operatörer. Dessa bör vara bekanta för dig eftersom de är samma operatorer som används i kalkylbladsformler (förutom Mod-operatorn).
| Fungera |
Operatörssymbol |
| Tillägg |
+ |
| Multiplikation |
* |
| Division |
/ |
| Subtraktion |
– |
| Exponentiering |
^ |
| Strängsammansättning |
& |
| Heltalsdivision (resultatet är alltid ett heltal) |
|
Modulo aritmetik (returnerar resten av en divisionsoperation
) |
Mod |
När du skriver en Excel-formel gör du modularitmetik genom att använda MOD-funktionen. Till exempel returnerar följande formel 2 (resten när du dividerar 12 med 5):
=MOD(12,5)
I VBA används Mod-operatorn så här (och z har värdet 2):
z = 12 Mod 5
Termen sammanlänkning är programmerare som talar för "gå samman." Således, om du sammanfogar strängar, kombinerar du strängar för att skapa en ny och förbättrad sträng.
VBA tillhandahåller också en komplett uppsättning logiska operatörer. Av dessa används Not, And och Or oftast.
| Operatör |
Vad den gör |
| Inte |
Utför en logisk negation på ett uttryck |
| Och |
Utför en logisk konjunktion på två uttryck |
| Eller |
Utför en logisk disjunktion på två uttryck |
| Xor |
Utför en logisk uteslutning på två uttryck |
| ekv |
Utför en logisk ekvivalens på två uttryck |
| Imp |
Utför en logisk implikation på två uttryck |
Prioritetsordningen för operatorer i VBA är exakt densamma som i Excel-formler. Exponentiering har högsta företräde. Därefter kommer multiplikation och division, följt av addition och subtraktion. Du kan använda parenteser för att ändra den naturliga prioritetsordningen, så att allt som är inklämt inom parentes kommer före en operator. Ta en titt på den här koden:
x = 3
y = 2
z = x + 5 * y
När den föregående koden exekveras, vad är värdet på z? Om du svarade 13 får du en guldstjärna som bevisar att du förstår begreppet operatörsföreträde. Om du svarade 16, läs detta: Multiplikationsoperationen (5 * y) utförs först, och det resultatet läggs till x.
Många programmerare brukar använda parenteser även när de inte krävs. Till exempel, i det verkliga livet kan den sista uppgiften skrivas så här:
z = x + (5 * y)
Var inte blyg för att använda parenteser även om de inte krävs - särskilt om det gör din kod lättare att förstå. VBA bryr sig inte om du använder extra parentes.