VBA Useita (sisäkkäisiä) If -lauseita

Tämä opetusohjelma näyttää, miten sisäkkäisiä If -lausekkeita käytetään VBA: ssa

Jos lausuntojen avulla voit testata yksittäistä ehtoa VBA: ssa nähdäksesi, onko ehto tosi vai epätosi, ja vastauksesta riippuen koodi liikkuu oikean tai väärän väitteen suuntaan.

Yksi IF -lausunto

1234567891011 Alatesti JosDim x kokonaislukunax = 10Jos x = 10 niin'Jos x on 10, ehto on tottaMsgBox x on 10 "Muu'jos x ei ole 10, ehto on epätosiMsgbox "x ei ole 10"Loppu JosEnd Sub

Sisäkkäiset IF: t selitetty

Sisäkkäisen Ifin avulla voit asettaa useita ehtoja alkuperäisen Ifin jokaisen oikean ja/tai väärän lausuman sisälle.

1234567891011121314151617181920212223242526 AlatestiNestedIf ()Dim x kokonaislukunaDim y kokonaislukunaDim z kokonaislukunax = 10y = 9z = 8Jos x = 10 niin'Jos x on 10, ehto on tosi, joten testaa y: täJos y = 8, niinMsgBox "y on 9"Muu'jos y ei ole 10, ehto on vääräViesti "y ei ole 9"Loppu JosMuu'jos x ei ole 10, ehto on epätosi, joten testataan z: täJos z = 8 niinMsgBox "z on 8"Muu'jos z ei ole 8, ehto on epätosiViesti "z ei ole 10"Loppu Jos'toinen loppu Jos tarvitaan alkuperäisen sulkemiseksi, josLoppu JosEnd Sub

Koodin sisennys kirjoitettaessa on aina hyvä käytäntö, koska se tekee koodista helpon lukea ja seurata, kun sinun on palattava siihen jossain vaiheessa tai kun toisen ohjelmoijan on luettava se.

Voisimme myös luoda käyttäjän suunnitellun funktion (UDF) ja kutsua joidenkin Excel -solujen arvot funktioon parametreja käyttämällä.

1234567891011121314151617181920 Toiminto GetIf (x kokonaislukuna, y kokonaislukuna, z kokonaislukuna) merkkijononaJos x = 10 niin'Jos x on 10, ehto on tosi, joten testaa y: täJos y = 8, niinGetIf = "y on 9"Muu'jos y ei ole 10, ehto on vääräGetIf = "y ei ole 9"Loppu JosMuu'jos x ei ole 10, ehto on epätosi, joten testataan z: täJos z = 8 niinGetIf = "z on 8"Muu'jos z ei ole 8, ehto on epätosiGetIf = "z ei ole 10"Loppu Jos'toinen loppu Jos tarvitaan alkuperäisen sulkemiseksi, josLoppu JosLopeta toiminto

Sisällytetty käytännön esimerkki

Harkitse seuraavaa toimintoa:

12345678910111213141516171819202122 Toiminto GetDiscount (dblPrice As Double) Kuten DoubleJos dblHinta> = 1000 Sitten'jos hinta on yli 1000, anna alennusJos dblHinta> = 2000 Sitten'jos yli 2000, anna 10% alennusHae alennus = dblHinta * 0,1MuuMuussa tapauksessa anna 5% alennusHanki alennus = dblHinta * 0,05Loppu Jos"jos hinta ei ole yli 1000Muu"jos yli 500, anna 2,5% alennusJos dblHinta> = 500 SittenHae alennus = dblHinta * 0,025Muu'muuten ei alennustaHanki alennus = 0Loppu Jos'toinen loppu Jos tarvitaan alkuperäisen sulkemiseksi, josLoppu JosLopeta toiminto

Käyttämällä tätä toimintoa Excel -taulukossa voimme testata tilauksen kokonaishinnan ja soveltaa erilaisia ​​alennuksia summasta riippuen.

VBA -ohjelmointi | Koodigeneraattori toimii sinulle!

ElseIfin käyttäminen

ElseIf antaa meille mahdollisuuden yksinkertaistaa koodiasi, koska se siirtyi vain toiseen if -lauseeseen, jos ensimmäinen palauttaa väärän.

12345678910111213141516 Toiminto GetDiscount (dblPrice As Double) Kuten Double'käytä muuta, jos haluat vähentää koodin kirjoittamistaJos dblHinta> = 2000 SittenHae alennus = dblHinta * 0,1Muuten Jos dblHinta> = 1000 SittenHae alennus = dblHinta * 0,075Muuten Jos dblHinta> = 500 SittenHanki alennus = dblHinta * 0,05Muuten Jos dblHinta> = 200 SittenHae alennus = dblHinta * 0,025Muuten Jos dblHinta> = 100 SittenHae alennus = dblHinta * 0,01MuuHanki alennus = 0Loppu JosLopeta toiminto

Tapausselosteen käyttäminen

Voimme myös käyttää tapauslausumaa saman vaikutuksen saavuttamiseksi.

1234567891011121314151617 Toiminto GetDiscount (dblPrice As Double) Kuten DoubleValitse Case dblPriceTässä tapauslausunnossa on 6 erilaista alennustasoaTapaus on> = 2000Hae alennus = dblHinta * 0,1Tapaus on> = 1000Hae alennus = dblHinta * 0,075Tapaus on> = 500Hanki alennus = dblHinta * 0,05Tapaus on> = 200Hae alennus = dblHinta * 0,025Tapaus on> = 100Hae alennus = dblHinta * 0,01Asia MuuHanki alennus = 0Lopeta ValitseLopeta toiminto

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave