VBA Meerdere (geneste) If-instructies

Deze tutorial laat je zien hoe je geneste If-statements in VBA gebruikt

Als u met instructies kunt testen op een enkele voorwaarde in VBA om te zien of de voorwaarde waar of onwaar is, en afhankelijk van het antwoord, zal de code in de richting van de ware of de valse verklaring bewegen.

Een enkele IF-verklaring

1234567891011 SubtestAlsDim x als geheel getalx = 10Als x = 10 dan'als x 10 is, is de voorwaarde waar'MsgBox x is 10"Anders'als x geen 10 is, is de voorwaarde onwaar'Berichtbox "x is geen 10"Stop alsEinde sub

Geneste IF's uitgelegd

Met een geneste If kunt u meerdere voorwaarden BINNEN elk van de True en/of False statements van de originele If plaatsen.

1234567891011121314151617181920212223242526 SubtestNestedIf()Dim x als geheel getalDim y als geheel getalDim z als geheel getalx = 10y = 9z = 8Als x = 10 dan'als x 10 is, is de voorwaarde waar, dus test voor yAls y = 8 danMsgBox "y is 9"Anders'als y niet 10 is, is de voorwaarde onwaar'Msgbox "y is geen 9"Stop alsAnders'als x geen 10 is, dan is de voorwaarde onwaar, dus laten we testen op zAls z = 8danMsgBox "z is 8"Anders'als z geen 8 is, is de voorwaarde onwaar'Msgbox "z is geen 10"Stop als'another End If is nodig om het origineel te sluiten ifStop alsEinde sub

Uw code inspringen wanneer u deze schrijft, is altijd een goede gewoonte, omdat het de code gemakkelijk te lezen en te volgen maakt wanneer u er op een bepaald moment op terug moet komen, of wanneer een andere programmeur deze moet lezen.

We kunnen ook een door de gebruiker ontworpen functie (UDF) maken en de waarden van sommige cellen uit Excel in de functie oproepen met behulp van parameters.

1234567891011121314151617181920 Functie GetIf(x als geheel getal, y als geheel getal, z als geheel getal) als tekenreeksAls x = 10 dan'als x 10 is, is de voorwaarde waar, dus test voor yAls y = 8 danGetIf = "y is 9"Anders'als y niet 10 is, is de voorwaarde onwaar'GetIf="y is geen 9"Stop alsAnders'als x geen 10 is, dan is de voorwaarde onwaar, dus laten we testen op zAls z = 8 danGetIf="z is 8"Anders'als z geen 8 is, is de voorwaarde onwaar'GetIf="z is geen 10"Stop als'another End If is nodig om het origineel te sluiten ifStop alsFunctie beëindigen

Genest als praktisch voorbeeld

Denk aan de volgende functie:

12345678910111213141516171819202122 Functie GetDiscount (dblPrice As Double) As DoubleAls dblPrijs >= 1000 Dan'Als de prijs hoger is dan 1000, wijs een korting toe'Als dblPrijs >= 2000 Dan'indien groter dan 2000, 10% korting geven'GetDiscount = dblPrijs * 0.1Anders'anders 5% korting geven'GetDiscount = dblPrijs * 0.05Stop als'als de prijs niet hoger is dan 1000Anders'indien groter dan 500, geef 2,5% korting'Als dblPrijs >= 500 DanGetDiscount = dblPrijs * 0.025Anders'anders geen korting'GetKorting = 0Stop als'another End If is nodig om het origineel te sluiten ifStop alsFunctie beëindigen

Met behulp van deze functie in een Excel-sheet kunnen we testen om de totale prijs voor een bestelling te zien en verschillende kortingen toepassen, afhankelijk van dat totaal.

VBA-programmering | Code Generator werkt voor u!

ElseIf . gebruiken

ElseIf stelt ons in staat om uw code te vereenvoudigen, omdat deze alleen naar de tweede if-instructie wordt verplaatst als de eerste een false retourneert.

12345678910111213141516 Functie GetDiscount (dblPrice As Double) As Double'gebruik else als je minder code hoeft te schrijven'Als dblPrijs >= 2000 DanGetDiscount = dblPrijs * 0.1ElseIf dblPrijs >= 1000 DanGetDiscount = dblPrijs * 0.075ElseIf dblPrijs >= 500 DanGetDiscount = dblPrijs * 0.05ElseIf dblPrijs >= 200 DanGetDiscount = dblPrijs * 0.025ElseIf dblPrijs >= 100 DanGetDiscount = dblPrijs * 0.01AndersGetKorting = 0Stop alsFunctie beëindigen

Een casusverklaring gebruiken

We kunnen ook een Case Statement gebruiken om hetzelfde effect te bereiken.

1234567891011121314151617 Functie GetDiscount (dblPrice As Double) As DoubleSelecteer Case dblPrijs'deze casus heeft 6 verschillende kortingsniveaus'Geval is >= 2000GetDiscount = dblPrijs * 0.1Geval is >= 1000GetDiscount = dblPrijs * 0.075Geval is >= 500GetDiscount = dblPrijs * 0.05Kast is >= 200GetDiscount = dblPrijs * 0.025Geval is >= 100GetDiscount = dblPrijs * 0.01Geval AndersGetKorting = 0Einde SelecterenFunctie beëindigen

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave