VBA többszörös (beágyazott) If állítások

Ez az oktatóanyag megmutatja, hogyan kell használni a beágyazott If utasításokat a VBA -ban

Ha az állítások lehetővé teszik, hogy a VBA egyetlen feltételét tesztelje, hogy a feltétel igaz vagy hamis, és a választól függően a kód az igaz állítás vagy a hamis állítás irányába mozdul el.

Egyetlen IF utasítás

1234567891011 Sub TestIfDim x egész számx = 10Ha x = 10 akkor'Ha x 10, akkor a feltétel igazAz MsgBox x 10 hüvelykesMás'Ha x nem 10, akkor a feltétel hamisMsgbox "x nem 10"Vége HaEnd Sub

Beágyazott IF -k magyarázva

A beágyazott If lehetővé teszi, hogy több feltételt helyezzen az eredeti If igaz és/vagy hamis állításaiba.

1234567891011121314151617181920212223242526 Sub TestNestedIf ()Dim x egész számDim y, mint egészDim z egész számkéntx = 10y = 9z = 8Ha x = 10 akkor'Ha x 10, akkor a feltétel igaz, ezért tesztelje y -tHa y = 8, akkorMsgBox "y 9"Más'ha y nem 10, akkor a feltétel hamisAz "y nem 9" üzenetüzenetVége HaMás'Ha x nem 10, akkor a feltétel hamis, ezért teszteljük a z -tHa z = 8 akkorAz MsgBox "z 8"Más'ha z nem 8, akkor a feltétel hamisAz "z nem 10" üzenetüzenetVége Ha'másik vége Ha szükséges az eredeti bezárásához, haVége HaEnd Sub

A kód behúzása írás közben mindig jó gyakorlat, mivel megkönnyíti a kód olvasását és követését, amikor vissza kell térnie hozzá, vagy amikor egy másik programozónak el kell olvasnia.

Létrehozhatunk egy felhasználó által tervezett függvényt (UDF) is, és egyes cellák értékeit az Excelből behívhatjuk a függvénybe a paraméterek használatával.

1234567891011121314151617181920 Funkció GetIf (x egész számként, y egész számként, z egész számként) karakterlánckéntHa x = 10 akkor'Ha x 10, akkor a feltétel igaz, ezért tesztelje y -tHa y = 8, akkorGetIf = "y 9"Más'ha y nem 10, akkor a feltétel hamisGetIf = "y nem 9"Vége HaMás'Ha x nem 10, akkor a feltétel hamis, ezért teszteljük a z -tHa z = 8 akkorGetIf = "z 8"Más'ha z nem 8, akkor a feltétel hamisGetIf = "z nem 10"Vége Ha'másik vége Ha szükséges az eredeti bezárásához, haVége HaVége funkció

Beágyazott, ha gyakorlati példa

Vegye figyelembe a következő funkciót:

12345678910111213141516171819202122 Funkció GetDiscount (dblPrice As Double) DuplakéntHa dblÁr> = 1000 Akkor'Ha az ár meghaladja az 1000 -et, rendeljen kedvezménytHa dblÁr> = 2000 Akkor"Ha nagyobb, mint 2000, adjon 10% kedvezménytGetDiscount = dblÁr * 0,1Más'egyébként 5% kedvezményt adGetDiscount = dblÁr * 0,05Vége Ha"ha az ár nem haladja meg az 1000 -etMás"Ha nagyobb, mint 500, adjon 2,5% kedvezménytHa dblÁr> = 500 AkkorGetDiscount = dblÁr * 0,025Más'különben nincs kedvezményGetDiscount = 0Vége Ha'másik vége Ha szükséges az eredeti bezárásához, haVége HaVége funkció

Ezzel a funkcióval egy Excel -lapon tesztelhetjük a megrendelés teljes árát, és különböző kedvezményeket alkalmazhatunk attól függően.

VBA programozás | A kódgenerátor működik az Ön számára!

Az ElseIf használata

Az ElseIf lehetővé teszi számunkra, hogy egyszerűsítsük a kódot, mivel csak akkor lépett le a második if utasításra, ha az első hamisat ad vissza.

12345678910111213141516 Funkció GetDiscount (dblPrice As Double) Mint Double'használjon mást, ha csökkenteni szeretné a kód írásátHa dblÁr> = 2000 AkkorGetDiscount = dblÁr * 0,1Egyébként, ha dblÁr> = 1000 AkkorGetDiscount = dblÁr * 0,075Egyébként Ha dblÁr> = 500 AkkorGetDiscount = dblÁr * 0,05Egyébként Ha dblÁr> = 200 AkkorGetDiscount = dblÁr * 0,025Máskülönben, ha dblÁr> = 100 AkkorGetDiscount = dblÁr * 0,01MásGetDiscount = 0Vége HaVége funkció

Esettanulmány használata

Eseti nyilatkozatot is használhatunk ugyanezen hatás eléréséhez.

1234567891011121314151617 Funkció GetDiscount (dblPrice As Double) DuplakéntVálassza a Case dblPrice lehetőséget'ez az esetleírás 6 különböző kedvezményszintet tartalmazAz eset> = 2000GetDiscount = dblÁr * 0,1Az eset> = 1000GetDiscount = dblÁr * 0,075Az eset> = 500GetDiscount = dblÁr * 0,05Az eset> = 200GetDiscount = dblÁr * 0,025Az eset> = 100GetDiscount = dblÁr * 0,01Más esetGetDiscount = 0Vége KiválasztásVége funkció

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave