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 |