VBA If, ElseIf, Else (Ultimate Guide to If paziņojumi)

VBA If paziņojums

Ja tad

VBA Ja paziņojumi ļauj pārbaudīt, vai izteiksmes ir patiesas vai nepatiesas, izmantojot dažādus kodus, pamatojoties uz rezultātiem.Apskatīsim vienkāršu piemēru:
1 Ja diapazons ("a2"). Vērtība> 0, tad diapazons ("b2"). Vērtība = "pozitīvs"
Tiek pārbaudīts, vai A2 diapazona vērtība ir lielāka par 0. Ja tā, iestatiet diapazonu B2 vienādam ar “Pozitīvs”Piezīme. Pārbaudot apstākļus, mēs izmantosim =,>, <,, = salīdzināšanas operatorus. Mēs tos sīkāk apspriedīsim vēlāk rakstā.Šeit ir vienkārša vienas rindas If paziņojuma sintakse:
1 Ja [testa_izteiksme], tad [darbība]
Lai atvieglotu lasīšanu, varat izmantot rindas turpinājuma rakstzīmi (pasvītrojumu), lai paplašinātu If paziņojumus līdz divām rindām (kā mēs to darījām iepriekš attēlā):
12 Ja [testa_izteiksme], tad _[darbība]
12 Ja diapazons ("a2"). Vērtība> 0, tad _Diapazons ("b2"). Vērtība = "Pozitīvs"

Beigas Ja

Iepriekš minētais “vienas rindas” paziņojums labi darbojas, pārbaudot vienu nosacījumu. Bet, tā kā jūsu IF paziņojumi kļūst sarežģītāki, ja ir vairāki nosacījumi, if paziņojuma beigās jāpievieno “End If”:
123 Ja diapazons ("a2"). Vērtība> 0 TadDiapazons ("b2"). Vērtība = "Pozitīvs"Beigas Ja

Šeit sintakse ir šāda:

123 Ja [testa_izteiksme], tad[darbība]Beigas Ja

Beigas If nozīmē paziņojuma if beigas.

Tagad pievienosim ElseIF:

ElseIF - vairāki nosacījumi

ElseIf tiek pievienots esošam If paziņojumam. Citādi, ja pārbauda, ​​vai nosacījums ir izpildīts TIKAI, ja iepriekšējie nosacījumi nav izpildīti.Iepriekšējā piemērā mēs pārbaudījām, vai šūnas vērtība ir pozitīva. Tagad mēs arī pārbaudīsim, vai šūnas vērtība ir negatīva, izmantojot ElseIf:
12345 Ja diapazons ("a2"). Vērtība> 0 TadDiapazons ("b2"). Vērtība = "Pozitīvs"Cits diapazons ("a2"). Vērtība <0 TadDiapazons ("b2"). Vērtība = "Negatīvs"Beigas Ja

Lai pārbaudītu vairākus nosacījumus, varat izmantot vairākus ElseIfs:

1234567891011 Apakš If_Multiple_Conditions ()Ja diapazons ("a2"). Vērtība = "Kaķis" TadDiapazons ("b2"). Vērtība = "Mjau"Cits Ja diapazons ("a2"). Vērtība = "Suns" TadDiapazons ("b2"). Vērtība = "Woof"Cits Ja diapazons ("a2"). Vērtība = "Pīle" TadDiapazons ("b2"). Vērtība = "Quack"Beigas JaBeigu apakš

Tagad mēs pievienosim Citādi:

Citādi

The Citādi darbosies, ja citi iepriekšējie nosacījumi nav izpildīti.

Mēs pabeigsim savu piemēru, izmantojot citu, lai norādītu, ka, ja šūnas vērtība nav pozitīva vai negatīva, tai jābūt nullei:

1234567 Ja diapazons ("a2"). Vērtība> 0 TadDiapazons ("b2"). Vērtība = "Pozitīvs"Cits Ja diapazons ("a2"). Vērtība <0 TadDiapazons ("b2"). Vērtība = "Negatīvs"CitādiDiapazons ("b2"). Vērtība = "nulle"Beigas Ja

Ja-citādi

Visizplatītākais If paziņojuma veids ir vienkāršs If-Else:

1234567 Sub If_Else ()Ja diapazons ("a2"). Vērtība> 0 TadDiapazons ("b2"). Vērtība = "Pozitīvs"CitādiDiapazons ("b2"). Vērtība = "Nav pozitīvs"Beigas JaBeigu apakš

Ligzdoti IF

Varat arī “ligzdot”, ja paziņojumi atrodas viens otrā.

1234567891011 Sub Nested_Ifs ()Ja diapazons ("a2"). Vērtība> 0 TadDiapazons ("b2"). Vērtība = "Pozitīvs"CitādiJa diapazons ("a2"). Vērtība <0 TadDiapazons ("b2"). Vērtība = "Negatīvs"CitādiDiapazons ("b2"). Vērtība = "nulle"Beigas JaBeigas JaBeigu apakš

JA - vai, un, Ksor, nē

Tālāk mēs apspriedīsim loģiskos operatorus: vai, Un, Xor, nē.

Ja Or

The Vai operators pārbauda, ​​ja vismaz viens nosacījums ir izpildīts.

Šis kods pārbaudīs, vai A2 diapazona vērtība ir mazāka par 5000 vai lielāka par 10 000:

123 Ja diapazons ("a2"). Vērtība 10000 TadDiapazons ("b2"). Vērtība = "ārpus diapazona"Beigas Ja

Vienā rindā varat iekļaut vairākus Ors:

123 Ja diapazons ("a2"). Vērtība 10000 vai diapazons ("a2"). Vērtība = 9999 TadDiapazons ("b2"). Vērtība = "ārpus diapazona"Beigas Ja

Ja izmantojat vairākus Ors, ieteicams izmantot rindas turpinājuma rakstzīmi, lai kodu būtu vieglāk lasīt:

123456 Ja diapazons ("a2"). Vērtība <5000 vai _Diapazons ("a2"). Vērtība> 10000 vai _Diapazons ("a2"). Vērtība = 9999 TadDiapazons ("b2"). Vērtība = "ārpus diapazona"Beigas Ja

Ja Un

Operators And ļauj pārbaudīt, vai VISI nosacījumi ir izpildīti.

123 Ja diapazons ("a2"). Vērtība> = 5000 Un diapazons ("a2"). Vērtība <= 10000 TadDiapazons ("b2"). Vērtība = "diapazonā"Beigas Ja

Ja Xor

Operators Xor ļauj pārbaudīt, vai ir izpildīts tieši viens nosacījums. Ja ir izpildīti nulles nosacījumi, Xor atgriež FALSE, ja ir izpildīti divi vai vairāki nosacījumi, Xor arī atgriež nepatiesu.

Es reti esmu redzējis Xor, ko izmanto VBA programmēšanā.

Ja nē

Operators Not tiek izmantots, lai FALSE pārvērstu par TRUE vai TRUE par FALSE:

123 Sadaļa IF_Ne ()MsgBox nav (taisnība)Beigu apakš

Ņemiet vērā, ka operatoram Not ir nepieciešama iekava ap izteiksmi, lai pārslēgtos.

Operatoru Not var izmantot arī paziņojumiem If:

123 Ja nē (diapazons ("a2"). Vērtība> = 5000 Un diapazons ("a2"). Vērtība <= 10000)Diapazons ("b2"). Vērtība = "ārpus diapazona"Beigas Ja

Ja salīdzinājumi

Veicot salīdzinājumus, parasti izmantojat vienu no salīdzināšanas operatoriem:

Salīdzināšanas operators Skaidrojums
= Vienāds ar
Nav vienāds ar
> Lielāks nekā
>= Lielāks vai vienāds ar
< Mazāk nekā
<= Mazāk vai vienādi

Tomēr jūs varat izmantot arī jebkuru izteiksmi vai funkciju kā rezultātā rodas patiesa vai nepatiesa

Ja - Būla funkcija

Veidojot izteiksmes If paziņojumiem, varat izmantot arī jebkuru funkciju, kas ģenerē TRUE vai False. VBA ir dažas no šīm funkcijām:

Funkcija Apraksts
IsDate Atgriež TRUE, ja izteiksme ir derīgs datums
Ir tukšs Pārbaudiet, vai nav tukšu šūnu vai nenoteiktu mainīgo
IsError Pārbaudiet kļūdu vērtības
IsNull Pārbaudiet NULL vērtību
IsNumeric Pārbaudiet skaitlisko vērtību

Tos var saukt šādi:

1 Ja IsEmpty (diapazons ("A1"). Vērtība), tad MsgBox "Cell Empty"

Programmai Excel ir arī daudzas papildu funkcijas, kuras var izsaukt, izmantojot WorksheetFunction. Šeit ir Excel IsText funkcijas piemērs:

12 Ja Application.WorksheetFunction.IsText (Diapazons ("a2"). Vērtība) Tad _MsgBox "Šūna ir teksts"

Varat arī izveidot savas lietotāja definētās funkcijas (UDF). Zemāk mēs izveidosim vienkāršu Būla funkciju, kas atgriež patiesu. Tad šo funkciju mēs izsauksim savā paziņojumā If:

1234567891011 Apakšfunkcija If_Function ()Ja TrueFunction TadMsgBox "True"Beigas JaBeigu apakšFunkcija TrueFunction () Kā BūlaTrueFunction = TrueBeigu funkcija

Teksta salīdzināšana

Varat arī salīdzināt tekstu, kas līdzīgs skaitļu salīdzināšanai:
1 Msgbox "a" = "b"
1 Msgbox "a" = "a"
Salīdzinot tekstu, jums jāņem vērā “Lieta” (augšējā vai apakšējā). Pēc noklusējuma VBA burtus ar dažādiem burtiem uzskata par neatbilstošiem. Citiem vārdiem sakot, "A" "a".Ja vēlaties, lai VBA ignorētu reģistru, moduļa augšdaļā jāpievieno opcija Salīdzināt tekstu:
1 Opcija Salīdzināt tekstu

Pēc šīs deklarācijas “A” = “a” izdarīšanas:
12345 Opcija Salīdzināt tekstuApakšfonds If_Text ()MsgBox "a" = "A"Beigu apakš

VBA ja patīk

VBA patīk operators ļauj precīzi salīdzināt tekstu. Noklikšķiniet uz saites “Patīk operatoram”, lai uzzinātu vairāk, bet tālāk mēs parādīsim pamata piemēru:

12345678 Dim strName kā StringstrName = "Čārlza kungs"Ja strName Tāpat kā "Mr*" TadMsgBox "True"CitādiMsgBox "False"Beigas Ja

Šeit mēs izmantojam zvaigznīti “*” aizstājējzīmi. * Apzīmē jebkuru rakstzīmju skaitu. Tātad iepriekš minētais If paziņojums atgriezīsies TRUE. Operators Patīk ir ārkārtīgi spēcīgs, bet bieži vien nepietiekami izmantots rīks teksta apstrādei.

Ja cilpas

VBA cilpas ļauj atkārtot darbības. IF-ELSE apvienošana ar cilpām ir lielisks veids, kā ātri apstrādāt daudzus aprēķinus.

Turpinot mūsu pozitīvo / negatīvo piemēru, mēs pievienosim katrai cilpai cilpu caur virkni šūnu:

1234567891011121314 Apakš If_Loop ()Dim šūna kā diapazonsKatrai diapazona šūnai ("A2: A6")Ja šūna.vērtība> 0 TadŠūna. Nobīde (0, 1). Vērtība = "Pozitīvs"ElseIf Cell.Value <0 TadŠūna.Pārvietojums (0, 1). Vērtība = "Negatīvs"CitādiŠūna. Nobīde (0, 1). Vērtība = "Nulle"Beigas JaNākamā šūnaBeigu apakš

Ja citi piemēri

Tagad mēs apskatīsim dažus konkrētākus piemērus.

Pārbaudiet, vai šūna ir tukša

Šis kods pārbaudīs, vai šūna ir tukša. Ja tas ir tukšs, tas šūnu ignorēs. Ja tas nav tukšs, tas izvadīs šūnas vērtību šūnai pa labi:
1234567 Apakš If_Cell_Empty ()Ja diapazons ("a2"). Vērtība "" TadDiapazons ("b2"). Vērtība = Diapazons ("a2"). VērtībaBeigas JaBeigu apakš

Pārbaudiet, vai šūnā ir īpašs teksts

Funkcija Instr pārbauda, ​​vai teksta virkne ir atrasta citā virknē. Izmantojiet to ar paziņojumu If, lai pārbaudītu, vai šūnā ir konkrēts teksts:
123 Ja Instr (Diapazons ("A2"). Vērtība, "teksts")> 0 TadMsgbox "Teksts atrasts"Beigas Ja

Pārbaudiet, vai šūnā ir teksts

Šis kods pārbaudīs, vai šūna ir teksts:
1234567 Apakšfonds If_Cell_Is_Text ()Ja Application.WorksheetFunction.IsText (Diapazons ("a2"). Vērtība) TadMsgBox "Šūna ir teksts"Beigas JaBeigu apakš

Ja ej

If paziņojuma rezultātu varat izmantot, lai pārietu uz citu koda sadaļu.
12345678910 Sub IfGoTo ()Ja IsError (Cell.value) TadGoto IzlaistBeigas Ja'Kāds kodsIzlaist:Beigu apakš

Dzēst rindu, ja šūna ir tukša

Izmantojot If un cilpas, varat pārbaudīt, vai šūna ir tukša, un, ja tā, izdzēsiet visu rindu.
123456789 Sub DeleteRowIfCellBlank ()Dim šūna kā diapazonsKatrai diapazona šūnai ("A2: A10")Ja Cell.Value = "" Tad Cell.EntireRow.DeleteNākamā šūnaBeigu apakš

Ja MessageBox Jā / Nē

Izmantojot VBA ziņojumu kastes, jūs varat lūgt lietotājam izvēlēties no vairākām iespējām. Jā / Nē ziņojumu lodziņā lietotājam tiek lūgts izvēlēties Jā vai Nē. Jūs varat pievienot procedūrai Jā / Nē ziņojumu lodziņu, lai jautātu lietotājam, vai viņi vēlas turpināt procedūru vai nē. Jūs apstrādāt lietotāja ievadīto informāciju, izmantojot paziņojumu Ja.Šeit ir jā/nē ziņojumu lodziņš praksē:
123456789101112 Sub MsgBoxVariable ()Blāva atbilde Kā vesels skaitlisatbilde = MsgBox ("Vai vēlaties turpināt?", vbQuestion + vbYesNo)Ja atbilde = vbJā TadMsgBox "Jā"CitādiMsgBox "Nē"Beigas JaBeigu apakš

VBA If, ElseIf, citādi Access VBA

Funkcijas If, ElseIf un Else Access VBA darbojas tieši tāpat kā programmā Excel VBA.

Varat izmantot paziņojumu If, lai pārbaudītu, vai ierakstu kopā ir ieraksti.

wave wave wave wave wave