Arbeide med operatorer
Sveip for å vise menyen
Å erklære variabler gir deg et sted å lagre verdier. Operatorer er måten du kombinerer, sammenligner og tester disse verdiene på — som egentlig bare er hvordan du uttrykker en forretningsregel i kode. "Er lagerbeholdningen under bestillingsnivå?" er en sammenligningsoperator. "Bestill på nytt hvis lageret er lavt OG produktet er Elektronikk" er en logisk operator.
Aritmetiske operatorer
De fleste av disse fungerer akkurat som du forventer fra en kalkulator, men VBA har to divisjonsoperatorer som faktisk gjør forskjellige ting:
Dim total As Double
total = 45 * 3 ' multiplication → 135
total = 100 / 3 ' division → 33.33...
total = 100 \ 3 ' integer division → 33 (drops remainder)
total = 100 Mod 3 ' remainder only → 1
total = 2 ^ 3 ' exponent → 8
Backslash (\) og Mod er de to som ofte forvirrer, fordi de ser like ut, men svarer på motsatte spørsmål. 100 \ 3 svarer på "hvor mange hele ganger går 3 opp i 100?" — svaret er 33, og det som er igjen, kastes. 100 Mod 3 svarer på det motsatte spørsmålet, "hva er igjen etter at 3 har gått opp i 100 så mange hele ganger som mulig?" — svaret er 1. Sammenlagt blir 33 grupper av 3 pluss en rest på 1 lik 100 — det er ikke en tilfeldighet, det er akkurat det disse to operatorene er laget for å dele opp. Dette paret er nøyaktig hvordan du kan regne ut "hvor mange fulle esker med 3 kan jeg pakke, og hvor mange enheter er igjen til en delvis eske?" eller sjekke om et radnummer er partall (i Mod 2 = 0).
Sammenligningsoperatorer
Disse returnerer True eller False:
44 > 30 ' True
44 = 44 ' True
"Office" = "office" ' False — VBA's default string comparison IS case-sensitive
44 <> 30 ' True (not equal)
Logiske operatorer
Disse kombinerer to eller flere sammenligninger til et enkelt True/False-resultat — akkurat slik en forretningsregel med flere betingelser uttrykkes:
If category = "Electronics" And stock < 30 Then
' triggers only if BOTH are true
End If
If category = "Office" Or category = "Electronics" Then
' triggers if EITHER is true
End If
If Not (stock < reorderLevel) Then
' triggers if stock is NOT below reorder level
End If
And krever at alle betingelser som kobles sammen med den er True før hele uttrykket blir True — det første eksempelet utløses kun for Elektronikk-produkter som også faktisk har lav lagerbeholdning, ikke for alle produkter med lavt lager uansett kategori. Or krever bare at én betingelse er True, som er måten du sjekker medlemskap i et lite sett av akseptable verdier. Not snur ganske enkelt et True/False-resultat til det motsatte — det brukes ofte, som i det tredje eksempelet, for å uttrykke en regel som "IKKE den dårlige tilstanden" når det er mer naturlig enn å formulere den gode tilstanden direkte.
Strengkonkatenering
Slår sammen tekst med & (ikke +, som VBA reserverer for tall):
Dim message As String
message = "Product: " & productName & " | Stock: " & currentStock
' Product: Wireless Mouse | Stock: 134
Legg merke til at currentStock er et tall (134), ikke tekst, men det settes likevel sammen i strengen uten noen konvertering — VBA konverterer automatisk et tall til tekstrepresentasjon når du bruker & på det. Denne bekvemmeligheten er akkurat grunnen til at & foretrekkes fremfor + for å sette sammen tekst: hvis du skrev "Stock: " + currentStock, ville VBA forsøke å tolke hele uttrykket som aritmetikk og enten gi en feil eller et forvirrende resultat, avhengig av konteksten. & betyr alltid "slå sammen som tekst," uten tvetydighet.
Oppgave
- Bruk Monitor Arm-dataene (Pris 89,99, Lager 18, Bestillingsnivå 10) og skriv et uttrykk som sjekker om lageret er mindre enn eller lik bestillingsnivå pluss 10 — en "nærmer seg"-advarsel i stedet for en streng alarm.
- Bygg en sammensatt melding: "Monitor Arm er på 18 enheter (bestillingsnivå ved 10)" ved å bruke variabler, ikke hardkodet tekst.
1. Uttrykket «nærmer seg»
- Du trenger tre variabler først: én for å holde lagerbeholdningen (18), én for bestillingsnivået (10), og deretter et uttrykk som sammenligner dem.
- «Mindre enn eller lik» er en enkelt sammenligningsoperator
<=. - Uttrykket «bestillingsnivå pluss 10» betyr at du ikke sammenligner lageret direkte mot 10 — du sammenligner det mot en beregnet verdi. Skriv denne addisjonen rett inn i sammenligningen:
stock <= reorderLevel + 10. - For å faktisk se resultatet, kan du tilordne det til en
Boolean-variabel. - Regn ut for hånd hva
10 + 10er før du kjører det, slik at du vet om18 <= 20skal giTrueellerFalse, og sjekk at koden din er enig.
2. Bygge meldingen
- Operatoren som setter sammen tekst er
&, ikke+. - Se på ønsket utdata stykkevis:
"Monitor Arm is at "+ (lagerantall) +" units (reorder at "+ (bestillingsnivå) +")". Tell delene — det er fem, som veksler mellom tekst i anførselstegn og en variabel. - Oppgaven sier «bruk variabler, ikke hardkodet tekst» — det betyr at
18og10i den endelige meldingen skal komme fra lager- ogreorderLevel-variablene dine, ikke skrives inn som tall direkte i strengen. - Å sette sammen et tall med
&krever ingen konvertering — VBA gjør det automatisk om til tekst, så du kan sette inn en numerisk variabel direkte i strengen. - Bygg det inn i én
String-variabel først (message = ...), og vis det deretter medMsgBox messageslik at du kan sjekke at det stemmer nøyaktig med forventet utdata, inkludert parenteser og mellomrom.
Eller bruk denne koden
Åpne Section_2_VBA_Fundamentals.xlsm, trykk Alt+F11, og bruk modulen du har jobbet i for denne arbeidsboken (sett inn en via Sett inn → Modul hvis du ikke har en ennå — følg samme mønster som modIntro i seksjon 1, du kan kalle den modFundamentals).
Sub MonitorArmCheck()
Dim stock As Integer
Dim reorderLevel As Integer
Dim isGettingClose As Boolean
Dim message As String
stock = 18
reorderLevel = 10
' Part 1 — the "getting close" check
isGettingClose = stock <= reorderLevel + 10
MsgBox isGettingClose
' Part 2 — the concatenated message
message = "Monitor Arm is at " & stock & " units (reorder at " & reorderLevel & ")"
MsgBox message
End Sub
Klikk hvor som helst inne i Sub, og trykk deretter F5. Du skal se to meldingsbokser dukke opp etter hverandre — først True (siden 18 ≤ 20), deretter setningen.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Arbeide med operatorer
Å erklære variabler gir deg et sted å lagre verdier. Operatorer er måten du kombinerer, sammenligner og tester disse verdiene på — som egentlig bare er hvordan du uttrykker en forretningsregel i kode. "Er lagerbeholdningen under bestillingsnivå?" er en sammenligningsoperator. "Bestill på nytt hvis lageret er lavt OG produktet er Elektronikk" er en logisk operator.
Aritmetiske operatorer
De fleste av disse fungerer akkurat som du forventer fra en kalkulator, men VBA har to divisjonsoperatorer som faktisk gjør forskjellige ting:
Dim total As Double
total = 45 * 3 ' multiplication → 135
total = 100 / 3 ' division → 33.33...
total = 100 \ 3 ' integer division → 33 (drops remainder)
total = 100 Mod 3 ' remainder only → 1
total = 2 ^ 3 ' exponent → 8
Backslash (\) og Mod er de to som ofte forvirrer, fordi de ser like ut, men svarer på motsatte spørsmål. 100 \ 3 svarer på "hvor mange hele ganger går 3 opp i 100?" — svaret er 33, og det som er igjen, kastes. 100 Mod 3 svarer på det motsatte spørsmålet, "hva er igjen etter at 3 har gått opp i 100 så mange hele ganger som mulig?" — svaret er 1. Sammenlagt blir 33 grupper av 3 pluss en rest på 1 lik 100 — det er ikke en tilfeldighet, det er akkurat det disse to operatorene er laget for å dele opp. Dette paret er nøyaktig hvordan du kan regne ut "hvor mange fulle esker med 3 kan jeg pakke, og hvor mange enheter er igjen til en delvis eske?" eller sjekke om et radnummer er partall (i Mod 2 = 0).
Sammenligningsoperatorer
Disse returnerer True eller False:
44 > 30 ' True
44 = 44 ' True
"Office" = "office" ' False — VBA's default string comparison IS case-sensitive
44 <> 30 ' True (not equal)
Logiske operatorer
Disse kombinerer to eller flere sammenligninger til et enkelt True/False-resultat — akkurat slik en forretningsregel med flere betingelser uttrykkes:
If category = "Electronics" And stock < 30 Then
' triggers only if BOTH are true
End If
If category = "Office" Or category = "Electronics" Then
' triggers if EITHER is true
End If
If Not (stock < reorderLevel) Then
' triggers if stock is NOT below reorder level
End If
And krever at alle betingelser som kobles sammen med den er True før hele uttrykket blir True — det første eksempelet utløses kun for Elektronikk-produkter som også faktisk har lav lagerbeholdning, ikke for alle produkter med lavt lager uansett kategori. Or krever bare at én betingelse er True, som er måten du sjekker medlemskap i et lite sett av akseptable verdier. Not snur ganske enkelt et True/False-resultat til det motsatte — det brukes ofte, som i det tredje eksempelet, for å uttrykke en regel som "IKKE den dårlige tilstanden" når det er mer naturlig enn å formulere den gode tilstanden direkte.
Strengkonkatenering
Slår sammen tekst med & (ikke +, som VBA reserverer for tall):
Dim message As String
message = "Product: " & productName & " | Stock: " & currentStock
' Product: Wireless Mouse | Stock: 134
Legg merke til at currentStock er et tall (134), ikke tekst, men det settes likevel sammen i strengen uten noen konvertering — VBA konverterer automatisk et tall til tekstrepresentasjon når du bruker & på det. Denne bekvemmeligheten er akkurat grunnen til at & foretrekkes fremfor + for å sette sammen tekst: hvis du skrev "Stock: " + currentStock, ville VBA forsøke å tolke hele uttrykket som aritmetikk og enten gi en feil eller et forvirrende resultat, avhengig av konteksten. & betyr alltid "slå sammen som tekst," uten tvetydighet.
Oppgave
- Bruk Monitor Arm-dataene (Pris 89,99, Lager 18, Bestillingsnivå 10) og skriv et uttrykk som sjekker om lageret er mindre enn eller lik bestillingsnivå pluss 10 — en "nærmer seg"-advarsel i stedet for en streng alarm.
- Bygg en sammensatt melding: "Monitor Arm er på 18 enheter (bestillingsnivå ved 10)" ved å bruke variabler, ikke hardkodet tekst.
1. Uttrykket «nærmer seg»
- Du trenger tre variabler først: én for å holde lagerbeholdningen (18), én for bestillingsnivået (10), og deretter et uttrykk som sammenligner dem.
- «Mindre enn eller lik» er en enkelt sammenligningsoperator
<=. - Uttrykket «bestillingsnivå pluss 10» betyr at du ikke sammenligner lageret direkte mot 10 — du sammenligner det mot en beregnet verdi. Skriv denne addisjonen rett inn i sammenligningen:
stock <= reorderLevel + 10. - For å faktisk se resultatet, kan du tilordne det til en
Boolean-variabel. - Regn ut for hånd hva
10 + 10er før du kjører det, slik at du vet om18 <= 20skal giTrueellerFalse, og sjekk at koden din er enig.
2. Bygge meldingen
- Operatoren som setter sammen tekst er
&, ikke+. - Se på ønsket utdata stykkevis:
"Monitor Arm is at "+ (lagerantall) +" units (reorder at "+ (bestillingsnivå) +")". Tell delene — det er fem, som veksler mellom tekst i anførselstegn og en variabel. - Oppgaven sier «bruk variabler, ikke hardkodet tekst» — det betyr at
18og10i den endelige meldingen skal komme fra lager- ogreorderLevel-variablene dine, ikke skrives inn som tall direkte i strengen. - Å sette sammen et tall med
&krever ingen konvertering — VBA gjør det automatisk om til tekst, så du kan sette inn en numerisk variabel direkte i strengen. - Bygg det inn i én
String-variabel først (message = ...), og vis det deretter medMsgBox messageslik at du kan sjekke at det stemmer nøyaktig med forventet utdata, inkludert parenteser og mellomrom.
Eller bruk denne koden
Åpne Section_2_VBA_Fundamentals.xlsm, trykk Alt+F11, og bruk modulen du har jobbet i for denne arbeidsboken (sett inn en via Sett inn → Modul hvis du ikke har en ennå — følg samme mønster som modIntro i seksjon 1, du kan kalle den modFundamentals).
Sub MonitorArmCheck()
Dim stock As Integer
Dim reorderLevel As Integer
Dim isGettingClose As Boolean
Dim message As String
stock = 18
reorderLevel = 10
' Part 1 — the "getting close" check
isGettingClose = stock <= reorderLevel + 10
MsgBox isGettingClose
' Part 2 — the concatenated message
message = "Monitor Arm is at " & stock & " units (reorder at " & reorderLevel & ")"
MsgBox message
End Sub
Klikk hvor som helst inne i Sub, og trykk deretter F5. Du skal se to meldingsbokser dukke opp etter hverandre — først True (siden 18 ≤ 20), deretter setningen.
Takk for tilbakemeldingene dine!