Ovaj će vam vodič pokazati kako koristiti ugniježđene naredbe If u VBA
Ako vam izrazi dopuštaju testiranje jednog uvjeta u VBA -i kako biste vidjeli je li uvjet Tačan ili Netačan, a ovisno o odgovoru, kôd će se pomaknuti u smjeru istinitog ili lažnog iskaza.
Jedinstveni IF iskaz
1234567891011 | Podispit AkoDim x kao cijeli brojx = 10Ako je x = 10 tada'ako je x 10, uvjet je istinitMsgBox x je 10 "Drugo'ako x nije 10, uvjet je netočanPoruka za poruke "x nije 10"Završi akoKraj podm |
Objašnjeni ugniježđeni IF -ovi
Ugniježđeni If omogućuje vam postavljanje više uvjeta Unutar svakog od istinitih i/ili lažnih izraza izvornog If.
1234567891011121314151617181920212223242526 | Pod TestNstedIf ()Dim x kao cijeli brojZatamnite kao cijeli brojDim z kao cijeli brojx = 10y = 9z = 8Ako je x = 10 tada'ako je x 10, uvjet je istinit pa provjerite za yAko je y = 8 tadaMsgBox "y je 9"Drugo'ako y nije 10, uvjet je netočanPoruka "y nije 9"Završi akoDrugo'ako x nije 10 tada je uvjet neistinit, pa idemo' testirati zAko je z = 8, tadaMsgBox "z je 8"Drugo'ako z nije 8, uvjet je netočanSMS poruka "z nije 10"Završi ako'drugi kraj Ako je potrebno za zatvaranje izvornika akoZavrši akoKraj podm |
Uvlačenje koda kada ga pišete uvijek je dobra praksa jer ga čini lakim za čitanje i praćenje kada se morate vratiti na njega u nekoj fazi ili kad ga drugi programer mora pročitati.
Također bismo mogli stvoriti korisnički dizajniranu funkciju (UDF) i pozvati vrijednosti nekih ćelija iz Excela u funkciju pomoću parametara.
1234567891011121314151617181920 | Funkcija GetIf (x kao cijeli broj, y kao cijeli broj, z kao cijeli broj) kao nizAko je x = 10 tada'ako je x 10, uvjet je istinit pa provjerite za yAko je y = 8 tadaGetIf = "y je 9"Drugo'ako y nije 10, uvjet je lažanGetIf = "y nije 9"Završi akoDrugo'ako x nije 10 tada je uvjet lažan, pa idemo' testirati zAko je z = 8 tadaGetIf = "z je 8"Drugo'ako z nije 8, uvjet je netočanGetIf = "z nije 10"Završi ako'drugi kraj Ako je potrebno za zatvaranje izvornika akoZavrši akoZavršna funkcija |
Primjer ugniježđen ako je praktičan
Razmotrite sljedeću funkciju:
12345678910111213141516171819202122 | Funkcija GetDiscount (dblPrice As Double) Kao DoubleAko je dblCijena> = 1000 Tada'ako je cijena veća od 1000, dodijelite popustAko je dblCijena> = 2000 Tada'ako je veći od 2000, dajte 10% popustaGetDiscount = dblPrice * 0.1Drugo'U suprotnom dajte 5% popustaGetDiscount = dblCijena * 0,05Završi ako'ako cijena nije veća od 1000Drugo'ako je veći od 500, dajte 2,5% popustaAko je dblCijena> = 500 TadaGetDiscount = dblPrice * 0,025Drugo'inače nema popustaGetDiscount = 0Završi ako'drugi kraj Ako je potrebno za zatvaranje izvornika akoZavrši akoZavršna funkcija |
Pomoću ove funkcije u Excelovom listu možemo testirati da vidimo ukupnu cijenu narudžbe i primijeniti različite popuste ovisno o tom zbroju.
VBA programiranje | Generator koda radi za vas!
Korištenje ElseIf -a
ElseIf nam omogućuje da pojednostavimo vaš kôd jer se pomaknuo samo na drugu if naredbu ako prva vraća false.
12345678910111213141516 | Funkcija GetDiscount (dblPrice As Double) Kao Double'upotrijebite else ako smanjite pisanje kodaAko je dblCijena> = 2000 TadaGetDiscount = dblPrice * 0.1Inače, ako je dblPrice> = 1000 TadaGetDiscount = dblPrice * 0,075Inače, ako je dblPrice> = 500 TadaGetDiscount = dblCijena * 0,05Inače, ako je dblPrice> = 200 TadaGetDiscount = dblPrice * 0,025Inače, ako je dblPrice> = 100 TadaGetDiscount = dblPrice * 0,01DrugoGetDiscount = 0Završi akoZavršna funkcija |
Korištenje izjave slučaja
Također možemo koristiti izjavu slučaja za postizanje istog učinka.
1234567891011121314151617 | Funkcija GetDiscount (dblPrice As Double) Kao DoubleOdaberite Case dblPrice'Ova izjava slučaja ima 6 različitih razina popustaSlučaj je> = 2000GetDiscount = dblPrice * 0.1Slučaj je> = 1000GetDiscount = dblPrice * 0,075Slučaj je> = 500GetDiscount = dblCijena * 0,05Slučaj je> = 200GetDiscount = dblPrice * 0,025Slučaj je> = 100GetDiscount = dblPrice * 0,01Slučaj InačeGetDiscount = 0Kraj OdaberiteZavršna funkcija |