Denne opplæringen viser deg hvordan du bruker nestede If -setninger i VBA
Hvis utsagn lar deg teste for en enkelt tilstand i VBA for å se om tilstanden er sann eller usann, og avhengig av svaret, vil koden bevege seg i retning av den sanne setningen eller den falske setningen.
En enkelt IF -uttalelse
1234567891011 | Sub TestIfDim x som heltallx = 10Hvis x = 10 da'hvis x er 10, er betingelsen sannMsgBox x er 10 "Ellers'hvis x ikke er 10, er tilstanden usannMsgbox "x er ikke 10"Slutt omSlutt Sub |
Nestede IF -er forklart
A Nested If lar deg sette flere betingelser INNEN i hver av de sanne og/eller usanne utsagnene til den opprinnelige If.
1234567891011121314151617181920212223242526 | Sub TestNestedIf ()Dim x som heltallDim y som heltallDim z som heltallx = 10y = 9z = 8Hvis x = 10 da'hvis x er 10, er tilstanden sann, så test for yHvis y = 8 daMsgBox "y er 9"Ellers'hvis y ikke er 10, er betingelsen usannMsgbox "y er ikke 9"Slutt omEllers'hvis x ikke er 10, er tilstanden usann, så la oss' teste for zHvis z = 8 daMsgBox "z er 8"Ellers'hvis z ikke er 8, er tilstanden falskMsgbox "z er ikke 10"Slutt om'en annen ende Hvis er nødvendig for å lukke originalen ifSlutt omSlutt Sub |
Det er alltid god praksis å innrykke koden når du skriver den, da den gjør koden lett å lese og følge når du må komme tilbake til den på et tidspunkt, eller når en annen programmerer må lese den.
Vi kan også lage en brukerdesignet funksjon (UDF) og kalle verdiene til noen celler fra Excel til funksjonen ved hjelp av parametere.
1234567891011121314151617181920 | Funksjon GetIf (x som heltall, y som heltall, z som heltall) som strengHvis x = 10 da'hvis x er 10, er tilstanden sann, så test for yHvis y = 8 daGetIf = "y er 9"Ellers'hvis y ikke er 10, er betingelsen usannGetIf = "y er ikke 9"Slutt omEllers'hvis x ikke er 10, er tilstanden usann, så la oss' teste for zHvis z = 8 daGetIf = "z er 8"Ellers'hvis z ikke er 8, er tilstanden falskGetIf = "z er ikke 10"Slutt om'en annen ende Hvis er nødvendig for å lukke originalen ifSlutt omSluttfunksjon |
Nestet hvis praktisk eksempel
Vurder følgende funksjon:
12345678910111213141516171819202122 | Funksjon GetDiscount (dblPrice As Double) As DoubleHvis dblPrice> = 1000 Da'hvis prisen er større enn 1000, gi rabattHvis dblPrice> = 2000 Da'hvis større enn 2000, gi 10% rabattGetDiscount = dblPrice * 0,1Ellersellers gi 5% rabattGetDiscount = dblPrice * 0,05Slutt om'hvis prisen ikke er større enn 1000Ellers'hvis større enn 500, gi 2,5% rabattHvis dblPrice> = 500 DaGetDiscount = dblPrice * 0,025Ellers'ellers ingen rabattGetDiscount = 0Slutt om'en annen ende Hvis er nødvendig for å lukke originalen ifSlutt omSluttfunksjon |
Ved å bruke denne funksjonen i et Excel -ark, kan vi teste for å se totalprisen for en bestilling, og bruke forskjellige rabatter avhengig av denne summen.
VBA -programmering | Kodegenerator fungerer for deg!
Bruke ElseIf
ElseIf lar oss forenkle koden din, da den bare flyttet ned til den andre if -setningen hvis den første returnerer en usann.
12345678910111213141516 | Funksjon GetDiscount (dblPrice As Double) As Double'bruk annet hvis du vil kutte ned på å skrive kodeHvis dblPrice> = 2000 DaGetDiscount = dblPrice * 0,1ElseIf dblPrice> = 1000 DaGetDiscount = dblPrice * 0,075ElseIf dblPrice> = 500 DaGetDiscount = dblPrice * 0,05ElseIf dblPrice> = 200 DaGetDiscount = dblPrice * 0,025ElseIf dblPrice> = 100 DaGetDiscount = dblPrice * 0,01EllersGetDiscount = 0Slutt omSluttfunksjon |
Bruke en sakserklæring
Vi kan også bruke en sakserklæring for å oppnå samme effekt.
1234567891011121314151617 | Funksjon GetDiscount (dblPrice As Double) As DoubleVelg sak dblPris'denne saksoppgaven har 6 forskjellige rabattnivåerSak er> = 2000GetDiscount = dblPrice * 0,1Sak er> = 1000GetDiscount = dblPrice * 0,075Sak er> = 500GetDiscount = dblPrice * 0,05Sak er> = 200GetDiscount = dblPrice * 0,025Sak er> = 100GetDiscount = dblPrice * 0,01Case ElseGetDiscount = 0Avslutt VelgSluttfunksjon |