VBA Multiple (Nested) If -uttalanden

Denna handledning visar dig hur du använder kapslade If -uttalanden i VBA

Om påståenden låter dig testa ett enda villkor i VBA för att se om villkoret är sant eller falskt, och beroende på svaret, kommer koden att röra sig i riktningen mot det sanna uttalandet eller det falska påståendet.

Ett enda IF -uttalande

1234567891011 Sub TestIfDim x som heltalx = 10Om x = 10 då'om x är 10 är villkoret santMsgBox x är 10 "Annan'om x inte är 10 är villkoret falsktMsgbox "x är inte 10"Avsluta omAvsluta Sub

Kapslade IF förklaras

A Nested If låter dig sätta flera villkor INNAN i var och en av de sanna och/eller falska påståendena i originalet If.

1234567891011121314151617181920212223242526 Sub TestNestedIf ()Dim x som heltalDim y som heltalDim z som heltalx = 10y = 9z = 8Om x = 10 då'om x är 10, är ​​villkoret sant så testa för yOm y = 8 dåMsgBox "y är 9"Annan'om y inte är 10 är villkoret falsktMsgbox "y är inte 9"Avsluta omAnnan'om x inte är 10 är villkoret falskt, så låt oss testa för zOm z = 8 sedanMsgBox "z är 8"Annan'om z inte är 8 är villkoret falsktMsgbox "z är inte 10"Avsluta om'annat slut Om det behövs för att stänga originalet ifAvsluta omAvsluta Sub

Det är alltid bra att skriva in koden när du skriver den eftersom den gör koden lätt att läsa och följa när du måste komma tillbaka till den någon gång eller när en annan programmerare måste läsa den.

Vi kan också skapa en användardesignad funktion (UDF) och anropa värdena för vissa celler från Excel till funktionen med hjälp av parametrar.

1234567891011121314151617181920 Funktion GetIf (x som heltal, y som heltal, z som heltal) som strängOm x = 10 då'om x är 10, är ​​villkoret sant så testa för yOm y = 8 dåGetIf = "y är 9"Annan'om y inte är 10 är villkoret falsktGetIf = "y är inte 9"Avsluta omAnnan'om x inte är 10 är villkoret falskt, så låt oss testa för zOm z = 8 dåGetIf = "z är 8"Annan'om z inte är 8 är villkoret falsktGetIf = "z är inte 10"Avsluta om'annat slut Om det behövs för att stänga originalet ifAvsluta omAvsluta funktion

Kapslat om praktiskt exempel

Tänk på följande funktion:

12345678910111213141516171819202122 Funktion GetDiscount (dblPrice As Double) As DoubleOm dblPrice> = 1000 Då'om priset är större än 1000, tilldela en rabattOm dblPrice> = 2000 Då'om större än 2000, ge 10% rabattGetDiscount = dblPrice * 0,1Annan'annars ge 5% rabattGetDiscount = dblPrice * 0,05Avsluta om'om priset inte är högre än 1000Annan'om större än 500, ge 2,5% rabattOm dblPrice> = 500 DåGetDiscount = dblPrice * 0,025Annan'annars ingen rabattGetDiscount = 0Avsluta om'annat slut Om det behövs för att stänga originalet ifAvsluta omAvsluta funktion

Med den här funktionen i ett Excel -ark kan vi testa för att se det totala priset för en beställning och tillämpa olika rabatter beroende på den totalen.

VBA -programmering | Kodgenerator fungerar för dig!

Använda ElseIf

ElseIf gör det möjligt för oss att förenkla din kod eftersom den bara flyttade ner till den andra if -satsen om den första returnerar en falsk.

12345678910111213141516 Funktion GetDiscount (dblPrice As Double) As Double'använd annat om du vill minska på att skriva kodOm dblPrice> = 2000 DåGetDiscount = dblPrice * 0,1ElseIf dblPrice> = 1000 DåGetDiscount = dblPrice * 0,075ElseIf dblPrice> = 500 DåGetDiscount = dblPrice * 0,05ElseIf dblPrice> = 200 DåGetDiscount = dblPrice * 0,025ElseIf dblPrice> = 100 DåGetDiscount = dblPrice * 0,01AnnanGetDiscount = 0Avsluta omAvsluta funktion

Använda ett ärendebesked

Vi kan också använda ett ärendebesked för att uppnå samma effekt.

1234567891011121314151617 Funktion GetDiscount (dblPrice As Double) As DoubleVälj fall dblPris'detta ärende har 6 olika rabattnivåerFall är> = 2000GetDiscount = dblPrice * 0,1Fall är> = 1000GetDiscount = dblPrice * 0,075Fall är> = 500GetDiscount = dblPrice * 0,05Fall är> = 200GetDiscount = dblPrice * 0,025Fall är> = 100GetDiscount = dblPrice * 0,01Case ElseGetDiscount = 0Avsluta VäljAvsluta funktion

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave