Excel VBA IIF-functie
VBA IIF (ook bekend als Direct als) is een verklaring die je misschien vaak hebt gezien tijdens het coderen onder VBA en het maken van macro's. Het is vergelijkbaar met de IF-functie van Excel, waarbij u een logische voorwaarde opschrijft en twee uitgangen geeft, als de voorwaarde waar is en als de voorwaarde onwaar is. Als je het bekijkt als een functie die lijkt op VBA ALS die we gebruiken om logische tests en omstandigheden te evalueren, vergis je je. Het lijkt dicht bij VBA Als en idealiter kan men zeggen dat ze echt een klein verschil tussen hen hebben tijdens de uitvoering. In dit artikel krijgen we meer informatie over de VBA IIF-verklaring en hoe we deze in ons dagelijks leven kunnen gebruiken om onze taken eenvoudiger te maken.
VBA IIF-instructie werkt op dezelfde manier als Excel IF-instructie. Het controleert de gegeven voorwaarde of logische instructie en geeft uitvoer die is gekoppeld aan de voorwaarde WAAR of wanneer de voorwaarde ONWAAR is.
Syntaxis van IIF in Excel VBA
De syntaxis voor de VBA IIF-functie in Excel is als volgt:
Waar,
- Expressie: is de logische voorwaarde die we wilden evalueren onder IIF-functie
- TruePart: is de waarde / uitvoer die we verwachten, wanneer de logische voorwaarde / uitdrukking WAAR is.
- FalsePart: is de waarde / uitvoer die we verwachten, wanneer de logische voorwaarde / expressie ONWAAR is.
Hoe Excel VBA IIF te gebruiken?
Laten we nu proberen met enkele voorbeelden over VBA IIF in Excel.
U kunt deze VBA IIF Excel-sjabloon hier downloaden - VBA IIF Excel-sjabloonLaten we een eenvoudig voorbeeld nemen om te zien hoe IIF werkt onder Microsoft VBA.
Voorbeeld # 1 - VBA IIF
Stap 1: Open een Visual Basic Editor (VBE). Ga naar het tabblad Invoegen en klik op Module . Er wordt een nieuwe module onder VBE toegevoegd.
Stap 2: Definieer een nieuwe subprocedure die uw macro in deze module kan bevatten.
Code:
Sub IIf_Ex1 () Einde Sub
Stap 3: Definieer twee nieuwe variabelen Var_1 als Lang en Resultaat met gegevenstype als variant.
Code:
Sub IIf_Ex1 () Dim var_1 zo lang Dim resultaat als Boolean End Sub
Stap 4: Ken een numerieke waarde toe aan Var_1 zodat we deze variabele kunnen gebruiken om de logische IIF-voorwaarde te controleren.
Code:
Sub IIf_Ex1 () Dim var_1 zo lang Dim resultaat als Booleaanse var_1 = 5 einde Sub
Stap 5: Gebruik de variabele Resultaat om de logische IIF-voorwaarde op te slaan waaronder we gaan controleren of de waarde die is toegewezen aan Var_1 groter is dan of gelijk is aan 10.
Code:
Sub IIf_Ex1 () Dim var_1 zo lang Dim resultaat als Booleaanse var_1 = 5 Resultaat = IIf (var_1> = 10, True, False) End Sub
Stap 6: Gebruik nu Debug.Print om het resultaat van de IIF-voorwaarde af te drukken op het venster met de directe resultaatviewer.
Code:
Sub IIf_Ex1 () Dim var_1 zo lang Dim resultaat als Booleaanse var_1 = 5 Resultaat = IIf (var_1> = 10, True, False) Foutopsporing Afdrukresultaat Einde Sub
Stap 7: Voer deze code uit door op F5 of de knop Uitvoeren bovenaan het paneel te drukken en de uitvoer te bekijken onder Direct uitvoerpaneel.
Voorbeeld # 2 - VBA IIF
Stel dat we gegevens als volgt onder werkblad hebben:
We willen alleen een uitvoer onder kolom B zodat het aantal even of oneven is.
Stap 1: Definieer een nieuwe subprocedure onder VBE.
Code:
Sub IIF_Ex2 () Einde Sub
Stap 2: Definieer twee variabelen 'a' en 'Nummers' als Lang.
Code:
Sub IIF_Ex2 () Dim een zo lang dimnummer als lang einde Sub
Stap 3: Start een For-lus waaronder we alle waarden in cel A2: A11 willen herhalen. De lus begint van 2 tot 11 (omdat we headers hebben in rij 1 voor kolom A en B).
Code:
Sub IIF_Ex2 () Dim een zo lang Dim nummer zo lang voor a = 2 tot 11 einde Sub
Stap 4: Gebruik eerder gedefinieerde nummervariabele om alle nummers uit kolom A op te slaan die variëren binnen het gegeven bereik met behulp van de toewijzingsoperator (A2: A11). Gebruik hiervoor de volgende coderegel.
Number = Sheet1.Range (“A” & a)
Code:
Sub IIF_Ex2 () Dim een zo lang Dim nummer zo lang voor a = 2 tot 11 Number = Sheet1.Range ("A" & a) End Sub
Met deze coderegel kan VBA alle rijen in kolom A van "Blad1" doorlopen in Excel één voor één onder For-lus.
Stap 5: Gebruik IIF om te controleren of elke celwaarde even of oneven is en sla de resultaten op onder elke cel van kolom B. De volgende regel code zal de taak voor u doen.
Sheet1.Range ("B" & a). Waarde = IIf (Nummer Mod 2 = 0, "Even", "Oneven")
Code:
Sub IIF_Ex2 () Dim een zo lang Dim nummer zo lang voor a = 2 tot 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a). Waarde = IIf (Number Mod 2 = 0, "Even", "Oneven") Einde Sub
Hier, in deze regel, willen we dat de resultaten worden opgeslagen onder elke cel van kolom B van Sheet1. Daarom hebben we "Sheet1.Range (" B "& i) .Waarde" aan de linkerkant van het stuk code gebruikt. We hebben IIF gebruikt om te controleren of het nummer deelbaar is door 2 met behulp van Mod (operator Modulo onder VBA). Ten slotte willen we de uitvoer om te zien of het getal Even of Oneven is in kolom B. Daarom worden deze twee waarden vermeld onder de IIF-instructie.
Stap 6: Sluit de For-lus met de volgende instructie, zodat het systeem na elke iteratie naar de volgende cel in blad gaat, totdat het de 11e rij bereikt.
Code:
Sub IIF_Ex2 () Dim een zo lang Dim nummer zo lang voor a = 2 tot 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a). Waarde = IIf (Number Mod 2 = 0, "Even", "Oneven") Volgende einde Sub
Stap 7: Dit is het dan. Voer deze code uit door op F5 te drukken of op de knop Uitvoeren die in het bovenste deelvenster van VBE is geplaatst. Nadat u deze macro hebt uitgevoerd, ziet u een uitvoer zoals hieronder onder blad1 (genaamd "Voorbeeld_1") van Excel-werkmap.
Voorbeeld # 3 - VBA IIF
We zullen nu een geneste IIF-verklaring zien:
Dit is dezelfde manier waarop we meerdere IF-omstandigheden in één lus nestelen.
Stel dat we dezelfde gegevens gebruiken als in het vorige geval. We wilden alleen een code schrijven waarmee we als volgt onderscheid kunnen maken tussen getallen:
- Als het nummer tussen 1 en 3 (inclusief 3) is, moet het "Klein" vermelden in kolom B.
- Als het nummer tussen 4 en 6 (6 inbegrepen) is, moet het "Medium" vermelden in kolom B.
- Als het nummer tussen 7 en 10 (10 inbegrepen) is, moet het "Groot" vermelden in kolom B.
Laten we een code schrijven voor dit type IIF:
Stap 1: Definieer een nieuwe subprocedure onder uw VBE die uw macro kan bevatten.
Code:
Sub NestedIf () Einde Sub
Volg stap 2 tot stap 4 hetzelfde als in het bovenstaande voorbeeld (voorbeeld 2 in dit artikel). Het omvat het definiëren van variabelen en het toevoegen van alle getallen in kolom A onder een For-lus.
Stap 5: Gebruik het volgende stuk code om de gewenste uitvoer te krijgen.
Code:
Sub NestedIf () Dimnummer zo lang voor a = 2 tot 11 Number = Sheet2.Range ("A" & a) Sheet2.Range ("B" & a) .Value = IIf (Number = 7, "Large", " Gemiddeld ")) Einde Sub
Stap 6: Sluit de For-lus met de volgende instructie en voer deze code uit met de F5- of Run-knop op het bovenste lint onder VBE. Nadat u de code hebt uitgevoerd, ziet u de uitvoer zoals hieronder:
Hier, in deze code, wordt de geneste IIF gebruikt. Onder de eerste IIF wordt ons gegeven wat moet worden afgedrukt onder kolom B wanneer de nummers tussen 1 en 3 liggen. Onder de tweede IIF hebben we vermeld wat er moet worden afgedrukt onder kolom B wanneer de nummers groter zijn dan of gelijk zijn aan 7 en onder de dezelfde IIF, hebben we aangegeven wat moet worden afgedrukt onder kolom B als de getallen niet tussen 1 tot 3 en 7 tot 10 liggen.
Op deze manier kunnen we meerdere IIF's onder dezelfde code toevoegen en nesten. Dit is het uit dit artikel. Laten we het ding afsluiten met een aantal dingen om te onthouden.
Dingen om te onthouden
- IIF evalueert altijd beide delen (WAAR en ONWAAR) voor een bepaalde voorwaarde. Het drukt echter alleen het FALSE-gedeelte af als niets WAAR is.
- Het schrijven is ingekort dan dat van standaard If-Else-verklaringen.
- Het is niet goed bekend, dus sommige gebruikers begrijpen uw code mogelijk niet als u IIF hebt gebruikt in plaats van conventionele If-Else.
Aanbevolen artikelen
Dit is een handleiding voor VBA IIF. Hier bespreken we hoe u Excel VBA IIF kunt gebruiken, samen met praktische voorbeelden en een downloadbare Excel-sjabloon. U kunt ook onze andere voorgestelde artikelen doornemen -
- Werken met VBA Active Cell
- Een rij verwijderen in VBA
- Hoe Excel VBA Transpose gebruiken?
- Hoe 1004 Fout met behulp van VBA te repareren