Excel VBA IIF-funktion
VBA IIF (også kendt som Immediate If) er en erklæring, som du måske ofte har set, mens du kodede under VBA og oprettede makroer. Det ligner Excel's IF-funktion, hvor du nedskriver en logisk betingelse og giver to output, hvis betingelsen er sand, og hvis betingelsen er falsk. Hvis du ser på det som en funktion, der ligner VBA IF, som vi bruger til at evaluere logiske test og forhold, tager du fejl. Det ser ud til at være tæt på VBA Hvis og ideelt set kan man sige, at de virkelig har en lille forskel mellem dem under udførelsen. I denne artikel får vi mere information om VBA IIF-erklæringen, og hvordan vi bruger den i vores daglige kodningsliv for at gøre vores opgaver lettere.
VBA IIF-erklæring fungerer på samme måde som Excel IF-erklæring. Den kontrollerer den leverede betingelse eller logiske erklæring og giver output enten forbundet med betingelsen SAND eller når betingelsen er FALSE.
Syntaks af IIF i Excel VBA
Syntaks for VBA IIF-funktion i Excel er som følger:
Hvor,
- Ekspression: er den logiske tilstand, vi ønskede at evaluere under IIF-funktion
- TruePart: er den værdi / output, vi forventer, når den logiske tilstand / udtryk er SAND.
- FalsePart: er den værdi / output, vi forventer, når den logiske tilstand / udtryk er FALSE.
Sådan bruges Excel VBA IIF?
Lad os nu prøve med nogle eksempler på VBA IIF i Excel.
Du kan downloade denne VBA IIF Excel-skabelon her - VBA IIF Excel-skabelonLad os tage et simpelt eksempel for at se, hvordan IIF fungerer under Microsoft VBA.
Eksempel 1 - VBA IIF
Trin 1: Åbn en Visual Basic Editor (VBE). Gå til fanen Indsæt, og klik på Modul . Det tilføjer et nyt modul under VBE.
Trin 2: Definer en ny underprocedure, som kan indeholde din makro i dette modul.
Kode:
Sub IIf_Ex1 () End Sub
Trin 3: Definer to nye variabler Var_1 som lang og Resultat med datatype som en variant.
Kode:
Sub IIf_Ex1 () Dim var_1 Så langt dim Resultat som boolsk ende Sub
Trin 4: Tildel en numerisk værdi til Var_1, så vi kan bruge denne variabel til at kontrollere den logiske IIF-tilstand.
Kode:
Sub IIf_Ex1 () Dim var_1 Så langt Dim Resultat Som Boolsk var_1 = 5 End Sub
Trin 5: Brug Resultatvariabel til at gemme den logiske IIF-tilstand, under hvilken vi skal kontrollere, om den værdi, der er tildelt Var_1, er større end eller lig med 10.
Kode:
Sub IIf_Ex1 () Dim var_1 Så langt Dim Resultat Som Boolsk var_1 = 5 Resultat = IIf (var_1> = 10, Sand, Falsk) End Sub
Trin 6: Brug nu Debug.Print til at udskrive resultatet af IIF-tilstanden i ruden med det øjeblikkelige resultat.
Kode:
Sub IIf_Ex1 () Dim var_1 Så langt Dim Resultat Som Boolsk var_1 = 5 Resultat = IIf (var_1> = 10, Sand, Falsk) Debug.Print Resultat Slut Sub
Trin 7: Kør denne kode ved at trykke på F5 eller Run-knappen øverst i ruden og se output under Direkte output-rude.
Eksempel 2 - VBA IIF
Antag, at vi har data under regnearket som følger:
Alt, hvad vi ønsker, er et output under kolonne B, så antallet er lige eller ulige.
Trin 1: Definer en ny underprocedure under VBE.
Kode:
Sub IIF_Ex2 () End Sub
Trin 2: Definer to variabler “a” og “Numbers” som lange.
Kode:
Sub IIF_Ex2 () Dim en så lang dim nummer som lang ende Sub
Trin 3: Start en For-loop, under hvilken vi ønsker at sløjfe alle værdier, der findes i celle A2: A11. Loop starter fra 2 til 11 (fordi vi har overskrifter i række 1 for kolonne A og B).
Kode:
Sub IIF_Ex2 () Dim en så lang dim nummer så lang for a = 2 til 11 End Sub
Trin 4: Brug nummervariablen defineret tidligere til at gemme alle numrene fra kolonne A, der varierer i det givne interval ved hjælp af tildelingsoperatør (A2: A11). Brug følgende kodelinje til at gøre det.
Nummer = Ark1.Range (“A” & a)
Kode:
Sub IIF_Ex2 () Dim en så lang dim-nummer så lang for a = 2 til 11-nummer = ark1.Range ("A" & a) End Sub
Denne kodelinie gør det muligt for VBA at køre gennem alle rækkerne i kolonne A fra “Sheet1” i excel en efter en under For loop.
Trin 5: Brug IIF til at kontrollere, om hver celleværdi er jævn eller ulig og gemme resultaterne under hver celle i kolonne B. Følgende kodelinje udfører opgaven for dig.
Ark1.Range (“B” & a) .Værdi = IIf (Nummer Mod 2 = 0, “Even”, “Odd”)
Kode:
Sub IIF_Ex2 () Dim en så lang dim nummer så lang for a = 2 til 11 nummer = Ark1.Range ("A" & a) Ark1.Range ("B" & a) .Value = IIf (Nummer Mod 2 = 0, "Even", "Odd") End Sub
Her i denne linje ønsker vi, at resultaterne skal gemmes under hver celle i kolonne B fra ark1. Derfor brugte vi “Sheet1.Range (“ B ”& i) .Value” på venstre side af kodestykket. Vi brugte IIF til at kontrollere, om antallet er delbart med 2 ved hjælp af Mod (Modulo-operatør under VBA). Endelig ønsker vi output om, hvorvidt tallet er jævnt eller uligt i kolonne B. Derfor er disse to værdier nævnt under IIF-sætningen.
Trin 6: Luk For loop med Næste sætning, så systemet efter hver iteration bevæger sig mod den næste celle i arket, indtil det når den 11. række.
Kode:
Sub IIF_Ex2 () Dim en så lang dim nummer så lang for a = 2 til 11 nummer = Ark1.Range ("A" & a) Ark1.Range ("B" & a) .Value = IIf (Nummer Mod 2 = 0, "Even", "Odd") Sub End til næste ende
Trin 7: Dette er det. Kør denne kode ved at trykke på F5 eller Run-knappen placeret i den øverste rude af VBE. Når du har kørt denne makro, vil du se et output som nedenfor under ark1 (benævnt "Eksempel_1") i Excel-arbejdsbog.
Eksempel 3 - VBA IIF
Vi vil se en indlejret IIF-erklæring nu:
Dette er på samme måde som vi indlejrer flere IF-betingelser i en enkelt sløjfe.
Antag, at de samme data, som vi brugte i det foregående tilfælde. Alt, hvad vi ønskede, er at skrive en kode, der giver os mulighed for at skelne mellem tal som følger:
- Hvis tallet er mellem 1 og 3 (3 inkluderet), skal det nævne “Lille” under kolonne B.
- Hvis tallet er mellem 4 og 6 (6 inkluderet), skal det nævne “Medium” under kolonne B.
- Hvis tallet er mellem 7 og 10 (10 inkluderet), skal det nævnes “Stort” under kolonne B.
Lad os skrive en kode til denne type IIF:
Trin 1: Definer en ny underprocedure under din VBE, som kan indeholde din makro.
Kode:
Sub NestedIf () End Sub
Følg trin 2 til trin 4, som i ovenstående eksempel (eksempel 2 i denne artikel). Det inkluderer definition af variabler og tilføjelse af alle de numre, der findes i kolonne A under en For-loop.
Trin 5: Brug følgende kodestykke for at få den ønskede output.
Kode:
Sub NestedIf () Dim-nummer så længe for a = 2 til 11 Number = Sheet2.Range ("A" & a) Sheet2.Range ("B" & a) .Value = IIf (Number = 7, "Large", " Medium ")) End Sub
Trin 6: Luk For loop med Næste sætning, og kør denne kode ved hjælp af F5 eller Kør knappen, der findes i det øverste bånd under VBE. Når du kører koden, vil du se output som nedenfor:
I denne kode bruges den indlejrede IIF. Under den første IIF får vi, hvad der skal udskrives under kolonne B, når numrene er mellem 1 og 3. Under anden IIF nævnte vi, hvad der skal udskrives under kolonne B, når tallene er større end eller lig med 7 og under samme IIF, vi leverede, hvad der skulle udskrives under kolonne B, når tallene ikke er mellem 1 til 3 og 7 til 10.
På denne måde kan vi tilføje flere IIF'er under den samme kode og indlejre dem. Dette er det fra denne artikel. Lad os pakke tingene op med nogle ting, der skal huskes.
Ting at huske
- IIF evaluerer altid begge dele (SAND og FALSE) for en bestemt tilstand. Den udskriver dog kun FALSE-delen, når intet er sandt.
- Skrivning er forkortet end standard if-Else-udsagn.
- Det er ikke kendt, derfor kan nogle brugere muligvis ikke forstå din kode, hvis du har brugt IIF i stedet for konventionel If-Else.
Anbefalede artikler
Dette er en guide til VBA IIF. Her diskuterer vi, hvordan man bruger Excel VBA IIF sammen med praktiske eksempler og downloadbar excel-skabelon. Du kan også gennemgå vores andre foreslåede artikler -
- Arbejder med VBA Active Cell
- Sletning af en række i VBA
- Sådan bruges Excel VBA-transponering?
- Sådan rettes 1004-fejl ved brug af VBA