VBA Multiple (Nested) If -erklæringer

Denne vejledning viser dig, hvordan du bruger indlejrede If -sætninger i VBA

Hvis udsagn giver dig mulighed for at teste for en enkelt betingelse i VBA for at se, om betingelsen er sand eller falsk, og afhængigt af svaret, vil koden bevæge sig i retning af den sande sætning eller den falske sætning.

En enkelt IF -erklæring

1234567891011 Sub TestIfDim x som heltalx = 10Hvis x = 10 så'hvis x er 10, er betingelsen sandMsgBox x er 10 "Andet'hvis x ikke er 10, er betingelsen falskMsgbox "x er ikke 10"Afslut HvisAfslut Sub

Indlejrede IF'er forklaret

A Nested If giver dig mulighed for at sætte flere betingelser INDEN for hver af de sande og/eller falske udsagn i den originale If.

1234567891011121314151617181920212223242526 Sub TestNestedIf ()Dim x som heltalDim y som heltalDim z som heltalx = 10y = 9z = 8Hvis x = 10 så'hvis x er 10, er betingelsen sand, så test for yHvis y = 8 såMsgBox "y er 9"Andet'hvis y ikke er 10, er betingelsen falskMsgbox "y er ikke 9"Afslut HvisAndet'hvis x ikke er 10, er betingelsen falsk, så lad os' teste for zHvis z = 8 derefterMsgBox "z er 8"Andet'hvis z ikke er 8, er betingelsen falskMsgbox "z er ikke 10"Afslut Hvis'anden ende Hvis det er nødvendigt for at lukke originalen ifAfslut HvisAfslut Sub

Indrykning af din kode, når du skriver den, er altid god praksis, da den gør koden let at læse og følge, når du på et tidspunkt skal vende tilbage til den, eller når en anden programmør skal læse den.

Vi kunne også oprette en brugerdesignet funktion (UDF) og kalde værdierne for nogle celler fra Excel til funktionen ved hjælp af parametre.

1234567891011121314151617181920 Funktion GetIf (x som heltal, y som heltal, z som heltal) som strengHvis x = 10 så'hvis x er 10, er betingelsen sand, så test for yHvis y = 8 såGetIf = "y er 9"Andet'hvis y ikke er 10, er betingelsen falskGetIf = "y er ikke 9"Afslut HvisAndet'hvis x ikke er 10, er betingelsen falsk, så lad os' teste for zHvis z = 8 såGetIf = "z er 8"Andet'hvis z ikke er 8, er betingelsen falskGetIf = "z er ikke 10"Afslut Hvis'anden ende Hvis det er nødvendigt for at lukke originalen ifAfslut HvisAfslut funktion

Indlejret hvis praktisk eksempel

Overvej følgende funktion:

12345678910111213141516171819202122 Funktion GetDiscount (dblPrice as Double) As DoubleHvis dblPrice> = 1000 Så'hvis prisen er større end 1000, tildel en rabatHvis dblPrice> = 2000 Så'hvis større end 2000, give 10% rabatGetDiscount = dblPrice * 0,1Andet'ellers give 5% rabatGetDiscount = dblPrice * 0,05Afslut Hvis'hvis prisen ikke er større end 1000Andet'hvis der er større end 500, skal du give 2,5% rabatHvis dblPrice> = 500 SåGetDiscount = dblPrice * 0,025Andet'ellers ingen rabatGetDiscount = 0Afslut Hvis'anden ende Hvis det er nødvendigt for at lukke originalen ifAfslut HvisAfslut funktion

Ved hjælp af denne funktion i et Excel -ark kan vi teste for at se den samlede pris for en ordre og anvende forskellige rabatter afhængigt af det samlede beløb.

VBA -programmering | Kodegenerator virker for dig!

Brug af ElseIf

ElseIf gør det muligt for os at forenkle din kode, da den kun flyttede ned til den anden if -sætning, hvis den første returnerer en falsk.

12345678910111213141516 Funktion GetDiscount (dblPrice as Double) As Double'brug ellers hvis du vil skære ned på at skrive kodeHvis dblPrice> = 2000 SåGetDiscount = dblPrice * 0,1ElseIf dblPrice> = 1000 HerefterGetDiscount = dblPrice * 0,075ElseIf dblPrice> = 500 HerefterGetDiscount = dblPrice * 0,05ElseIf dblPrice> = 200 HerefterGetDiscount = dblPrice * 0,025ElseIf dblPrice> = 100 HerefterGetDiscount = dblPrice * 0,01AndetGetDiscount = 0Afslut HvisAfslut funktion

Brug af en sagserklæring

Vi kan også bruge en sagserklæring til at opnå den samme effekt.

1234567891011121314151617 Funktion GetDiscount (dblPrice as Double) As DoubleVælg sag dblPris'denne sagserklæring har 6 forskellige rabatniveauerSag er> = 2000GetDiscount = dblPrice * 0,1Sag er> = 1000GetDiscount = dblPrice * 0,075Sag er> = 500GetDiscount = dblPrice * 0,05Sag er> = 200GetDiscount = dblPrice * 0,025Sag er> = 100GetDiscount = dblPrice * 0,01Sag ellersGetDiscount = 0Afslut VælgAfslut funktion

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave