VBA If, ElseIf, Else (Végső útmutató az If állításokhoz)

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ékreMegjegyzé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:
1 Msgbox "a" = "b"
1 Msgbox "a" = "a"
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.

wave wave wave wave wave