Excel VBA IIF-funksjon
VBA IIF (også kjent som Immediate If) er en uttalelse som du ofte har sett mens du kodet under VBA og opprettet makroer. Det ligner på Excels IF-funksjon der du skriver ned en logisk tilstand og gir to utganger, hvis betingelsen er sann og om tilstanden er falsk. Hvis du ser på det som en funksjon som ligner på VBA IF som vi bruker for å evaluere logiske tester og forhold, tar du feil. Det ser ut til å være nær VBA Hvis og ideelt sett kan man si at de virkelig har en liten forskjell mellom seg under henrettelse. I denne artikkelen vil vi få mer informasjon om VBA IIF-uttalelsen og hvordan du kan bruke den i det daglige kodelivet for å gjøre oppgavene våre enklere.
VBA IIF-setningen fungerer på samme måte som Excel IF-setningen. Den sjekker tilstanden eller den logiske setningen som er gitt og gir utdata enten assosiert med tilstanden SANN eller når tilstanden er FALSE.
Syntaks av IIF i Excel VBA
Syntaks for VBA IIF-funksjon i Excel er som følger:
Hvor,
- Uttrykk: er den logiske tilstanden vi ønsket å evaluere under IIF-funksjonen
- TruePart: er verdien / utgangen vi forventer når den logiske tilstanden / uttrykket er SANN.
- FalsePart: er verdien / utgangen vi forventer når den logiske tilstanden / uttrykket er FALSE.
Hvordan bruke Excel VBA IIF?
La oss prøve med noen eksempler på VBA IIF i Excel.
Du kan laste ned denne VBA IIF Excel-malen her - VBA IIF Excel-malLa oss ta et enkelt eksempel for å se hvordan IIF fungerer under Microsoft VBA.
Eksempel 1 - VBA IIF
Trinn 1: Åpne en Visual Basic Editor (VBE). Gå til kategorien Sett inn og klikk på Modul . Den vil legge til en ny modul under VBE.
Trinn 2: Definer en ny delprosedyre som kan inneholde makroen din i denne modulen.
Kode:
Sub IIf_Ex1 () Slutt Sub
Trinn 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 Result Som Boolean End Sub
Trinn 4: Tildel en numerisk verdi til Var_1 slik at vi kan bruke denne variabelen til å sjekke den logiske IIF-tilstanden.
Kode:
Sub IIf_Ex1 () Dim var_1 Så lang Dim Resultat Som Boolsk var_1 = 5 Slutt Sub
Trinn 5: Bruk Resultatvariabel for å lagre den logiske IIF-tilstanden som vi skal sjekke om verdien tilordnet Var_1 er større enn eller tilsvarer 10.
Kode:
Sub IIf_Ex1 () Dim var_1 Så langt Dim Result Som Boolean var_1 = 5 Resultat = IIf (var_1> = 10, True, False) End Sub
Trinn 6: Bruk nå Debug.Print til å skrive ut resultatet av IIF-tilstanden i visningsruten for øyeblikkelig resultat.
Kode:
Sub IIf_Ex1 () Dim var_1 Så langt Dim Result Som Boolean var_1 = 5 Resultat = IIf (var_1> = 10, True, False) Debug.Print Resultat Slutt Sub
Trinn 7: Kjør denne koden ved å trykke på F5 eller Kjør-knappen øverst i ruten og se utdata under Umiddelbar utgangsrute.
Eksempel 2 - VBA IIF
Anta at vi har data under arbeidsarket som følger:
Alt vi ønsker er en utgang under kolonne B slik at antallet er jevnt eller rart.
Trinn 1: Definer en ny delprosedyre under VBE.
Kode:
Sub IIF_Ex2 () Slutt Sub
Trinn 2: Definer to variabler “a” og “Tall” som lange.
Kode:
Sub IIF_Ex2 () Dim en like lang dim nummer som lang slutt Sub
Trinn 3: Start en For-loop der vi vil sløyfe alle verdiene som er til stede i celle A2: A11. Loop starter fra 2 til 11 (fordi vi har overskrifter i rad 1 for kolonne A og B).
Kode:
Sub IIF_Ex2 () Dim et like langt dimetall så langt for a = 2 til 11 Slutt Sub
Trinn 4: Bruk nummervariabelen definert tidligere for å lagre alle tallene fra kolonne A som varierer på det gitte området ved å bruke tildelingsoperatør (A2: A11). Bruk følgende kodelinje for å gjøre det.
Nummer = Ark1.Range (“A” & a)
Kode:
Sub IIF_Ex2 () Dim et like langt dimetall som lenge for a = 2 til 11 nummer = ark1.Range ("A" & a) Slutt sub
Denne kodelinjen gjør at VBA kan løpe gjennom alle radene i kolonne A fra “Ark 1” i Excel en etter en under For loop.
Trinn 5: Bruk IIF for å sjekke om hver celleverdi er jevn eller odd og lagre resultatene under hver celle i kolonne B. Følgende kodelinje gjør oppgaven for deg.
Ark1.Range (“B” & a). Verdi = IIf (Nummer Mod 2 = 0, “Lik”, “Odd”)
Kode:
Sub IIF_Ex2 () Dim en like 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 linjen, ønsker vi at resultatene skal lagres under hver celle i kolonne B fra ark1. Derfor brukte vi “Sheet1.Range (“ B ”& i) .Value” på venstre side av kodestykket. Vi brukte IIF for å sjekke om tallet er delbart med 2 ved bruk av Mod (Modulo-operatør under VBA). Til slutt vil vi ha utdata til om tallet er Even eller Odd i kolonne B. Derfor er disse to verdiene nevnt under IIF-setningen.
Trinn 6: Lukk For-loop med Neste- setning slik at systemet etter hver iterasjon vil bevege seg mot neste celle i arket, til det når den 11. raden.
Kode:
Sub IIF_Ex2 () Dim en like 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") Next End Sub
Trinn 7: Dette er det. Kjør denne koden ved å trykke på F5 eller Kjør-knappen plassert i den øverste ruten til VBE. Når du har kjørt denne makroen, vil du se en utdata som nedenfor under ark1 (kalt "Eksempel_1") fra Excel-arbeidsbok.
Eksempel 3 - VBA IIF
Vi vil se en nestet IIF-uttalelse nå:
Dette er på samme måte som vi hekker flere IF-forhold i en enkelt sløyfe.
Anta at de samme dataene som vi brukte i forrige tilfelle. Alt vi ønsket er å skrive en kode som lar oss skille mellom tall på følgende måte:
- Hvis tallet er mellom 1 og 3 (3 inkludert), skal det nevnes “Liten” under kolonne B.
- Hvis tallet er mellom 4 og 6 (6 inkludert), skal det nevnes “Medium” under kolonne B.
- Hvis tallet er mellom 7 og 10 (10 inkludert), skal det nevnes “Stort” under kolonne B.
La oss skrive en kode for denne typen IIF:
Trinn 1: Definer en ny underprosedyre under VBE-en din som kan inneholde makroen.
Kode:
Sub NestedIf () Slutt Sub
Følg trinn 2 til trinn 4 på samme måte som i eksemplet ovenfor (eksempel 2 i denne artikkelen). Det inkluderer å definere variabler og legge til alle tallene som er til stede i kolonne A under en For-loop.
Trinn 5: Bruk følgende kodestykke for å få ønsket utdata.
Kode:
Sub NestedIf () Dim nummer like lenge for a = 2 til 11 nummer = ark2.Range ("A" & a) Ark2.Range ("B" & a) .Value = IIf (Number = 7, "Large", " Medium ")) Slutt sub
Trinn 6: Lukk For loop med Neste setning, og kjør denne koden ved å bruke F5 eller Run-knappen som er til stede på det øvre båndet under VBE. Når du har kjørt koden, vil du se utdataene som nedenfor:
Her, i denne koden, brukes den nestede IIF. Under den første IIF får vi hva som skal skrives ut under kolonne B når tallene er mellom 1 og 3. Under andre IIF nevnte vi hva som skal skrives ut under kolonne B når tallene er større enn eller tilsvarer 7 og under samme IIF, ga vi hva som skulle skrives ut under kolonne B når tallene ikke er mellom 1 til 3 og 7 til 10.
På denne måten kan vi legge til flere IIF-er under samme kode og hekke dem. Dette er det fra denne artikkelen. La oss pakke saken opp med noen ting som skal huskes.
Ting å huske
- IIF evaluerer alltid begge delene (SANN og FALSE) for en bestemt tilstand. Den skriver imidlertid bare FALSE-delen når ingenting er SANN.
- Skriving er forkortet enn for standard Hvis-Else uttalelser.
- Det er ikke kjent, derfor vil kanskje noen brukere ikke forstå koden din hvis du har brukt IIF i stedet for konvensjonell If-Else.
Anbefalte artikler
Dette er en guide til VBA IIF. Her diskuterer vi hvordan du bruker Excel VBA IIF sammen med praktiske eksempler og nedlastbar Excel-mal. Du kan også gå gjennom andre foreslåtte artikler -
- Jobber med VBA Active Cell
- Slette en rad i VBA
- Hvordan bruke Excel VBA-transponering?
- Hvordan fikse 1004 feil ved bruk av VBA