VBA Multiple (Nested) If -utsagn

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

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave