VBA If nyilatkozat

Ha akkor
VBA Ha az állítások lehetővé teszik annak tesztelését, hogy a kifejezések igazak vagy hamisak, akkor az eredmények alapján más kódot futtatnak.Nézzünk egy egyszerű példát:
1 | Ha tartomány ("a2"). Érték> 0, akkor tartomány ("b2"). Érték = "pozitív" |
Ez azt vizsgálja, hogy az A2 tartomány értéke nagyobb -e, mint 0. Ha igen, akkor a B2 tartományt állítsa „Pozitív” értékre

Megjegyzés: A feltételek tesztelésekor a =,>, <,, = összehasonlító operátorokat fogjuk használni. A cikk későbbi részletesebben tárgyaljuk őket.Íme egy egyszerű egysoros If utasítás szintaxisa:
1 | Ha [teszt_kifejezés], akkor [művelet] |
Az olvasás megkönnyítése érdekében a Sor folytatása karakter (aláhúzás) segítségével kibővítheti az If állításokat két sorra (ahogy a fenti képen tettük):
12 | Ha [teszt_kifejezés], akkor _[akció] |
12 | Ha tartomány ("a2"). Érték> 0, akkor _Tartomány ("b2"). Érték = "Pozitív" |
Vége Ha
A fenti „egysoros” if utasítás jól működik, ha egy feltételt tesztel. De mivel az IF nyilatkozatok bonyolultabbá válnak több feltétellel, hozzá kell adnia egy „End If” -t az if utasítás végéhez:
123 | Ha Tartomány ("a2"). Érték> 0 AkkorTartomány ("b2"). Érték = "Pozitív"Vége Ha |
Itt a szintaxis:
123 | Ha [teszt_kifejezés] akkor[akció]Vége Ha |
A End If az if utasítás végét jelenti.
Most tegyünk hozzá egy ElseIF -et:
ElseIF - Több feltétel
Az ElseIf hozzáadódik egy meglévő If utasításhoz. Ellenkező esetben tesztel, ha egy feltétel teljesül
CSAK, ha az előző feltételek nem teljesültek.Az előző példában azt teszteltük, hogy egy cella értéke pozitív -e. Most azt is teszteljük, hogy a cella értéke negatív -e egy ElseIf használatával:
12345 | Ha Tartomány ("a2"). Érték> 0 AkkorTartomány ("b2"). Érték = "Pozitív"ElseIf tartomány ("a2"). Érték <0 AkkorTartomány ("b2"). Érték = "Negatív"Vége Ha |

Több ElseIf -et is használhat több feltétel tesztelésére:
1234567891011 | Rész If_Multiple_Conditions ()Ha Tartomány ("a2"). Érték = "Macska" AkkorTartomány ("b2"). Érték = "Miau"ElseIf tartomány ("a2"). Érték = "Kutya" AkkorTartomány ("b2"). Érték = "Woof"ElseIf tartomány ("a2"). Érték = "Kacsa" AkkorTartomány ("b2"). Érték = "Quack"Vége HaEnd Sub |

Most hozzáadunk egy Más:
Más
Az Más futni fog, ha más korábbi feltétel nem teljesült.
Befejezzük a példánkat egy Else használatával annak jelzésére, hogy ha a cella értéke nem pozitív vagy negatív, akkor nullának kell lennie:
1234567 | Ha Tartomány ("a2"). Érték> 0 AkkorTartomány ("b2"). Érték = "Pozitív"ElseIf tartomány ("a2"). Érték <0 AkkorTartomány ("b2"). Érték = "Negatív"MásTartomány ("b2"). Érték = "nulla"Vége Ha |
Ha más
Az If utasítás leggyakoribb típusa egy egyszerű If-Else:
1234567 | If IfElse ()Ha Tartomány ("a2"). Érték> 0 AkkorTartomány ("b2"). Érték = "Pozitív"MásTartomány ("b2"). Érték = "Nem pozitív"Vége HaEnd Sub |

Beágyazott IF -k
Azt is „fészkelheti”, ha az állítások egymáson belül vannak.
1234567891011 | Beágyazott alfák ()Ha Tartomány ("a2"). Érték> 0 AkkorTartomány ("b2"). Érték = "Pozitív"MásHa Tartomány ("a2"). Érték <0 AkkorTartomány ("b2"). Érték = "Negatív"MásTartomány ("b2"). Érték = "nulla"Vége HaVége HaEnd Sub |

HA - Vagy, És, Xor, Nem
Ezután a logikai operátorokat tárgyaljuk: Vagy: És, Xor, Nem.
Ha Or
Az Vagy kezelő teszteli, ha legalább egy feltétel teljesül.
A következő kód ellenőrzi, hogy az A2 tartomány értéke kisebb, mint 5000 vagy nagyobb, mint 10 000:
123 | Ha tartomány ("a2"). Érték 10000 MajdTartomány ("b2"). Érték = "Tartományon kívül"Vége Ha |

Több sort is megadhat egy sorban:
123 | Ha tartomány ("a2"). Érték 10000 vagy tartomány ("a2"). Érték = 9999 AkkorTartomány ("b2"). Érték = "Tartományon kívül"Vége Ha |
Ha több Ors -t fog használni, javasoljuk, hogy használjon sor folytató karaktert, hogy megkönnyítse a kód olvasását:
123456 | Ha tartomány ("a2"). Érték <5000 vagy _Tartomány ("a2"). Érték> 10000 vagy _Tartomány ("a2"). Érték = 9999 AkkorTartomány ("b2"). Érték = "Tartományon kívül"Vége Ha |

Ha És
Az And operátor lehetővé teszi, hogy tesztelje, ha MINDEN feltétel teljesül.
123 | Ha tartomány ("a2"). Érték> = 5000 és tartomány ("a2"). Érték <= 10000 AkkorTartomány ("b2"). Érték = "Tartományban"Vége Ha |

Ha Xor
A Xor operátor lehetővé teszi, hogy tesztelje, ha pontosan egy feltétel teljesül. Ha nulla feltétel teljesül, akkor Xor HAMIS értéket ad vissza. Ha két vagy több feltétel teljesül, akkor Xor hamis értéket is visszaad.
Ritkán láttam Xort használni a VBA programozásban.
Ha nem
A Not operátor a HAMIS értéket IGAZÁRA vagy IGAZ HAMISRA konvertálja:
123 | IF_N nem ()Az MsgBox nem (igaz)End Sub |
Ne feledje, hogy a Not operátor zárójeleket igényel a kifejezés körül a váltáshoz.
A Not operátor az If utasításokra is alkalmazható:
123 | Ha nem (Tartomány ("a2"). Érték> = 5000 És tartomány ("a2"). Érték <= 10000) AkkorTartomány ("b2"). Érték = "Tartományon kívül"Vége Ha |

Ha összehasonlítások
Összehasonlításkor általában az egyik összehasonlító operátort használja:
Összehasonlító operátor | Magyarázat |
= | Egyenlő |
| Nem egyenlő |
> | Nagyobb, mint |
>= | Nagyobb vagy egyenlő |
< | Kevesebb, mint |
<= | Kevesebb vagy egyenlő |
Azonban bármilyen kifejezést is használhat vagy funkciót ami IGAZ vagy HAMIS eredményt eredményez
Ha - logikai függvény
Az If állítások kifejezéseinek létrehozásakor bármely olyan funkciót is használhat, amely IGAZ vagy Hamis értéket generál. A VBA néhány funkcióval rendelkezik:
Funkció | Leírás |
IsDate | IGAZ értéket ad vissza, ha a kifejezés érvényes dátum |
Üres | Ellenőrizze az üres cellákat vagy a nem definiált változókat |
IsError | Ellenőrizze a hibaértékeket |
Nulla | Ellenőrizze a NULL értéket |
IsNumeric | Ellenőrizze a számértéket |
Ezeket így nevezhetjük:
1 | Ha IsEmpty (tartomány ("A1"). Érték), akkor az MsgBox "Cell Empty" |
Az Excel számos további funkcióval is rendelkezik, amelyek a WorksheetFunction használatával hívhatók meg. Íme egy példa az Excel IsText függvényére:
12 | Ha Application.WorksheetFunction.IsText (Tartomány ("a2"). Érték) Akkor _MsgBox "A cella szöveg" |
Saját felhasználó által definiált funkciókat (UDF -eket) is létrehozhat. Az alábbiakban létrehozunk egy egyszerű logikai függvényt, amely IGAZ értéket ad vissza. Ezt a függvényt az If utasításunkban fogjuk hívni:
1234567891011 | If IfFunkció ()Ha TrueFunction akkorMsgBox "Igaz"Vége HaEnd SubFunkció TrueFunction () Logikai értékkéntTrueFunction = IgazVége funkció |

Szöveg összehasonlítása
Szöveget is összehasonlíthat a számok összehasonlításához:
A szöveg összehasonlításakor ügyelnie kell a „kis” esetre (felső vagy alsó). A VBA alapértelmezés szerint nem egyezőnek tekinti a különböző eseteket tartalmazó betűket. Más szóval: "A" "a".Ha azt szeretné, hogy a VBA figyelmen kívül hagyja a kis- és nagybetűket, akkor hozzá kell adnia a Lehetőségek összehasonlítása szöveg deklarációt a modul tetejéhez:
1 | Opció Szöveg összehasonlítása |
Az „A” = „a” nyilatkozat megtétele után:
12345 | Opció Szöveg összehasonlításaIf_Text ()MsgBox "a" = "A"End Sub |
VBA Ha tetszik
A VBA Like Operator lehetővé teszi a szöveg pontatlan összehasonlítását. Kattintson a „Tetszik az operátorra” linkre, ha többet szeretne megtudni, de az alábbiakban egy alapvető példát mutatunk be:
12345678 | Dim strName mint karakterláncstrName = "Mr. Charles"Ha strName Mint "Mr*" AkkorMsgBox "Igaz"MásMsgBox "Hamis"Vége Ha |
Itt egy csillag „*” helyettesítő karaktert használunk. A * jelentése tetszőleges számú karakter. Tehát a fenti If utasítás IGAZ értéket ad vissza. A Like operátor rendkívül hatékony, de gyakran alul használt eszköz a szöveg kezelésére.
Ha hurkok
A VBA hurkok lehetővé teszik a műveletek megismétlését. Az IF-ELSE-k és a hurkok kombinálása nagyszerű módja annak, hogy sok számítást gyorsan feldolgozzunk.
Folytatva a pozitív / negatív példánkkal, minden ciklushoz hozzáadunk egy ciklus ciklusát:
1234567891011121314 | If_Loop () alDim cella mint tartományA tartomány minden cellájához ("A2: A6")Ha Cell.Value> 0 AkkorCell.Offset (0, 1) .Value = "Pozitív"Egyébként Cell.Érték <0 AkkorCell.Offset (0, 1) .Value = "Negative"MásCell.Offset (0, 1) .Value = "Zero"Vége HaKövetkező cellaEnd Sub |
Ha más példák
Most néhány konkrét példát fogunk áttekinteni.
Ellenőrizze, hogy a cella üres -e
Ez a kód ellenőrzi, hogy egy cella üres -e. Ha üres, akkor figyelmen kívül hagyja a cellát. Ha nem üres, akkor a cella értékét a jobb oldali cellába adja ki:
1234567 | If_Cell_Empty ()Ha Tartomány ("a2"). Érték "" AkkorTartomány ("b2"). Érték = Tartomány ("a2"). ÉrtékVége HaEnd Sub |
Ellenőrizze, hogy a cella tartalmaz -e meghatározott szöveget
Az Instr függvény megvizsgálja, hogy egy szövegsor található -e másik karakterláncban. Használja If utasítással annak ellenőrzésére, hogy egy cella tartalmaz -e konkrét szöveget:
123 | Ha Instr (Tartomány ("A2"). Érték, "szöveg")> 0 AkkorÜzenetdoboz "Szöveg található"Vége Ha |
Ellenőrizze, hogy a cella tartalmaz -e szöveget
Ez a kód teszteli, hogy egy cella szöveg -e:
1234567 | If If_Cell_Is_Text ()Ha Application.WorksheetFunction.IsText (Tartomány ("a2"). Érték) AkkorMsgBox "A cella szöveg"Vége HaEnd Sub |
Ha Goto
Az If utasítás eredményét felhasználhatja a kód másik szakaszának „Ugrás” -ra.
12345678910 | Sub IfGoTo ()Ha IsError (Cell.value) AkkorGoto SkipVége Ha- Valami kódKihagyás:End Sub |
Törölje a sort, ha a cella üres
Az If -k és ciklusok használatával tesztelheti, hogy egy cella üres -e, és ha igen, törölje a teljes sort.
123456789 | Sub DeleteRowIfCellBlank ()Dim cella mint tartományA tartomány minden cellájához ("A2: A10")Ha Cell.Value = "" Akkor Cell.EntireRow.DeleteKövetkező cellaEnd Sub |
Ha a MessageBox Igen / Nem
A VBA üzenetdobozokkal megkérheti a felhasználót, hogy válasszon több lehetőség közül. Az Igen / Nem üzenetmező arra kéri a felhasználót, hogy válassza az Igen vagy a Nem lehetőséget. Egy Igen / Nem üzenetmezőt adhat hozzá egy eljáráshoz, hogy megkérdezze a felhasználót, hogy folytatni kívánja -e az eljárást. A felhasználó bevitelét If utasítással kezelheti.Íme az Igen/Nem üzenet doboz a gyakorlatban:
123456789101112 | Sub MsgBoxVariable ()Halvány válasz Egész számkéntanswer = MsgBox ("Folytatni akarod?", vbQuestion + vbYesNo)Ha a válasz = vbIgen AkkorMsgBox "Igen"MásMsgBox "Nem"Vége HaEnd Sub |
VBA If, ElseIf, más az Access VBA -ban
Az If, ElseIf és Else függvények pontosan ugyanúgy működnek az Access VBA -ban, mint az Excel VBA.
Az If utasítással ellenőrizheti, hogy vannak -e rekordok a rekordkészletben.
