Ta vadnica vam bo pokazala, kako uporabljati ugnezdene stavke If v VBA
Če vam stavki omogočajo, da preizkusite en sam pogoj v VBA, da preverite, ali je pogoj True ali False, in odvisno od odgovora, se bo koda premaknila v smeri resnične izjave ali napačne izjave.
Enostaven stavek IF
1234567891011 | Podtestiranje ČeZatemni x kot celo številox = 10Če je x = 10, potem'če je x 10, je pogoj resMsgBox x je 10 "Sicer pa'če x ni 10, je pogoj napačenSporočilo "x ni 10"Konec ČeEnd Sub |
Pojasnjeni ugnezdeni IF -ji
Vgnezdeni If vam omogoča, da v notranjost vsakega od stavkov True in/ali False izvirnega If postavite več pogojev.
1234567891011121314151617181920212223242526 | Sub TestNstedIf ()Zatemni x kot celo številoZatemni kot celo številoDim z kot celo številox = 10y = 9z = 8Če je x = 10, potem'če je x 10, je pogoj res, zato preizkusite za yČe je y = 8, potemMsgBox "y je 9"Sicer pa'če y ni 10, je pogoj napačenSporočilo "y ni 9"Konec ČeSicer pa'če x ni 10, potem je pogoj napačen, zato' preizkusimo za zČe je z = 8, potemMsgBox "z je 8"Sicer pa'če z ni 8, je pogoj napačenSporočilo "z ni 10"Konec Če'another End If je potreben za zapiranje izvirnika ifKonec ČeEnd Sub |
Odmik kode, ko jo pišete, je vedno dobra praksa, saj olajša branje in sledenje kodi, ko se morate nanjo v določeni fazi vrniti, ali ko jo mora prebrati drug programer.
Prav tako bi lahko ustvarili funkcijo, ki jo je oblikoval uporabnik (UDF), in z uporabo parametrov v funkcijo poklicali vrednosti nekaterih celic iz Excela.
1234567891011121314151617181920 | Funkcija GetIf (x kot celo število, y kot celo število, z kot celo število) kot nizČe je x = 10, potem"če je x 10, je pogoj res, zato preizkusite za yČe je y = 8, potemGetIf = "y je 9"Sicer pa'če y ni 10, je pogoj napačenGetIf = "y ni 9"Konec ČeSicer pa'če x ni 10, potem je pogoj napačen, zato' preizkusimo za zČe je z = 8, potemGetIf = "z je 8"Sicer pa'če z ni 8, je pogoj napačenGetIf = "z ni 10"Konec Če'another End If je potreben za zapiranje izvirnika ifKonec ČeKončana funkcija |
Primer vgnezdit, če je praktičen
Razmislite o naslednji funkciji:
12345678910111213141516171819202122 | Funkcija GetDiscount (dblPrice As Double) Kot DoubleČe je dblPrice> = 1000, potem„če je cena večja od 1000, dodelite popustČe je dblPrice> = 2000, potem„če je večji od 2000, dajte 10% popustGetDiscount = dblPrice * 0,1Sicer pa"V nasprotnem primeru dajte 5% popustaGetDiscount = dblPrice * 0,05Konec Če"če cena ni večja od 1000Sicer pa"če je večji od 500, dajte 2,5% popustaČe je dblPrice> = 500 PotemGetDiscount = dblPrice * 0,025Sicer pa'drugače ni popustaGetDiscount = 0Konec Če'another End If je potreben za zapiranje izvirnika ifKonec ČeKončana funkcija |
S to funkcijo na Excelovem listu lahko preizkusimo, da vidimo skupno ceno naročila, in glede na to skupno vrednost uporabimo različne popuste.
Programiranje VBA | Generator kod deluje za vas!
Uporaba ElseIf
ElseIf nam omogoča, da poenostavimo vašo kodo, saj se je premaknila le na drugo izjavo if, če prva vrne false.
12345678910111213141516 | Funkcija GetDiscount (dblPrice As Double) Kot Double'če želite zmanjšati pisanje kode, uporabite elseČe je dblPrice> = 2000, potemGetDiscount = dblPrice * 0,1Če je dblPrice> = 1000, potemGetDiscount = dblPrice * 0,075Če je dblPrice> = 500 PotemGetDiscount = dblPrice * 0,05Drugače če je dblPrice> = 200 PotemGetDiscount = dblPrice * 0,025Če je dblPrice> = 100 PotemGetDiscount = dblPrice * 0,01Sicer paGetDiscount = 0Konec ČeKončana funkcija |
Uporaba izjave o primeru
Za dosego enakega učinka lahko uporabimo tudi izjavo o primeru.
1234567891011121314151617 | Funkcija GetDiscount (dblPrice As Double) Kot DoubleIzberite Primer dblPrice„ta izpis primera ima 6 različnih stopenj popustaPrimer je> = 2000GetDiscount = dblPrice * 0,1Primer je> = 1000GetDiscount = dblPrice * 0,075Primer je> = 500GetDiscount = dblPrice * 0,05Primer je> = 200GetDiscount = dblPrice * 0,025Primer je> = 100GetDiscount = dblPrice * 0,01Primer drugačeGetDiscount = 0Konec IzberiteKončana funkcija |