Hoe gebruik ik de if-instructie met else in vba?

Als u een geavanceerde VBA-gebruiker wilt zijn, is een IF-instructie een must. En ik geloof dat je het woord IF al kent en het vaak als spreadsheetfunctie gebruikt.

In VBA werkt IF op dezelfde manier. Het basisidee is om een taak uit te voeren wanneer een voorwaarde WAAR is, en anders niets te doen of iets anders te doen. Je kunt zowel eenvoudig als in complexe omstandigheden schrijven.

Voor een beter begrip heb ik het in drie verschillende delen verdeeld.

  • Voorzien om te testen.
  • Een taak die moet worden uitgevoerd als de voorwaarde WAAR is.
  • Een taak die moet worden uitgevoerd als de voorwaarde FALSE is.

Zo ziet het er in het echt uit:

met behulp van VBA IF-instructiecode in Excel

In het bovenstaande voorbeeld is regen een voorwaarde. Als deze voorwaarde WAAR is, zal de jongen zijn paraplu openen en als de voorwaarde ONWAAR is, zal hij zijn hoed dragen. Condities zijn alomtegenwoordig in ons dagelijks leven. Maar laten we nu teruggaan naar onze codeerwereld en deze verkennen.

Syntaxis: VBA IF

We hebben drie verschillende soorten IF-instructies in VBA.

1. ALS-Dan

IF THEN is de eenvoudigste vorm van een IF-instructie. Het enige dat we hoeven te doen is een voorwaarde opgeven die we moeten controleren. Als die voorwaarde WAAR is, wordt er een taak uitgevoerd. Maar als deze voorwaarde ONWAAR is, zal het niets doen en onmiddellijk over de schreef gaan.

Syntaxis

 IF condition Then statement[s]

In de bovenstaande syntaxis moeten we een voorwaarde opgeven die moet worden geëvalueerd en een taak die moet worden uitgevoerd als die voorwaarde WAAR is.

Voorbeeld

vba if-instructie met behulp van if then macrocode

In het bovenstaande voorbeeld hebben we gecontroleerd of cel A1 de waarde 10 bevat. Als dit het geval is, wordt er in de instructie een berichtvenster weergegeven met het bericht ‘Cel A1 heeft de waarde 10’.

 Sub CheckValue() If Range("A1").Value = 10 Then MsgBox ("Cell A1 has value 10") End Sub

2. ALS-dan-anders

U kunt de instructie IF-Then-Else gebruiken als u een specifieke taak wilt uitvoeren als een voorwaarde TRUE is, en een andere taak als een voorwaarde FALSE is.

Syntaxis

 IF Condition Then Statement[s] Else Statement[s] End If

Met de bovenstaande syntaxis kunnen we verschillende taken uitvoeren, afhankelijk van het resultaat van een voorwaarde. Als de voorwaarde WAAR is, zal het de verklaring uitvoeren die u vermeldde na “Then” of als de voorwaarde FALSE is, zal het de verklaring uitvoeren die u vermeldde na “Else”.

Voorbeeld

 Sub CheckValue() If Range("A1").Value = "10" Then MsgBox ("Cell A1 has value 10") Else MsgBox ("Cell A1 has a value other than 10") End Sub
vba if-instructie met if then else-macrocode

In het bovenstaande voorbeeld heb ik de IF-Then-Else-instructie gebruikt om de waarde in cel A1 te controleren.

Als cel A1 de waarde 10 heeft, krijgt u een berichtvenster met de tekst “Cel A1 heeft een waarde van 10” en als er een andere waarde in cel A1 staat, krijgt u een berichtvenster met de tekst “De cel A1 heeft een andere waarde dan 10”. Hier kunnen we dus verschillende taken uitvoeren op basis van het conditieresultaat.

3. ALS-dan-Elseif-Anders

Dit is het nuttigste en belangrijkste type IF dat u zal helpen bij het schrijven van geavanceerde conditieverklaringen. Bij dit type kunt u de tweede voorwaarde opgeven nadat u uw eerste voorwaarde heeft geëvalueerd.

Syntaxis

 IF Condition Then Statement[s] Elseif Condition Then Statement[s] Else Statement[s] End If

In de bovenstaande syntaxis hebben we:

  1. Op voorwaarde van evaluatie.
  2. Een instructie die moet worden uitgevoerd als deze voorwaarde TURE is.
  3. Als deze voorwaarde ONWAAR is, moeten we de tweede voorwaarde evalueren.
  4. En als de tweede voorwaarde WAAR is, moeten we een verklaring afleggen.
  5. Maar als beide voorwaarden, de eerste en de tweede, ONWAAR zijn, zal er een verklaring worden afgelegd die u na ‘Anders’ noemde.

En het beste is dat u een willekeurig aantal “Elseif”s in uw code kunt gebruiken. Dit betekent dat u in uw aangifte een onbeperkt aantal voorwaarden kunt vermelden.

Voorbeeld

vba if-instructie met if then elseif elseif macrocode
 Sub check_grade() If Range("A2").Value = "A" Then MsgBox "Very Good" Else If Range("A2").Value = "B" Then MsgBox "Good" ElseIf Range("A2").Value = "C" Then MsgBox "Average" ElseIf Range("A2").Value = "D" Then MsgBox "Poor" ElseIf Range("A2").Value = "E" Then MsgBox "Very Poor" Else MsgBox "Enter Correct Grade" End Sub

In het bovenstaande voorbeeld hebben we een macro geschreven die eerst cel A2 controleert op de waarde “A” en als de cel de beoordeling “A” heeft, retourneert de verklaring het bericht “Zeer goed”.

Deze instructie controleert eerst cel A2 op de waarde “A” en als de cel de beoordeling “A” heeft, retourneert de instructie het bericht “Zeer goed”.

En als de eerste voorwaarde ONWAAR is, zal de tweede voorwaarde worden geëvalueerd en het bericht “Goed” worden geretourneerd als de cel de beoordeling “B” heeft.

En als de tweede voorwaarde onwaar is, gaat deze naar de derde voorwaarde, enzovoort. Als alle vijf de voorwaarden onwaar zijn, zal het uiteindelijk de code uitvoeren die ik na de rest heb geschreven.

Het geheim van het schrijven van een IF-verklaring in VBA

Nu kent u alle soorten IS en kunt u er ook een kiezen, afhankelijk van de taak die u moet uitvoeren. Laat me je een geheim vertellen.

IF-instructie met één regel versus blok-IF-instructie

Je kunt een IF-statement op twee verschillende manieren schrijven en beide hebben voor- en nadelen. Kijk naar.

1. Verklaring van één regel

De verklaring van één regel is perfect als u de IF-Then-instructie gebruikt. De basis voor het gebruik van een line-instructie is het schrijven van al uw code op één regel.

 If A1 = 10 Then Msgbox("Cell A1 has value 10")

In de bovenstaande verklaring hebben we een IF-instructie geschreven om te evalueren of cel A1 de waarde 10 heeft. Vervolgens wordt er een berichtvenster weergegeven. De beste praktijk voor het gebruik van een instructie van één regel is wanneer u eenvoudige code moet schrijven. Het gebruik van éénregelige code voor complexe en lange declaraties is moeilijk te begrijpen.

Snelle tip: wanneer u code van één regel schrijft, hoeft u Endif niet te gebruiken om de instructie te voltooien.

2. Blokdeclaratie

Een Block-statement is perfect als je je code op een fatsoenlijke en begrijpelijke manier wilt schrijven. Wanneer u een blokinstructie schrijft, kunt u meerdere regels in uw macro gebruiken, waardoor u nette en schone code krijgt.

 Sub check_value() If Range(“A1”).Value = “10” Then MsgBox ("Cell A1 has value 10") Else MsgBox ("Cell A1 has a value other than 10") End If End Sub

In het bovenstaande voorbeeld hebben we een IF-Then-Else-instructie in blokken geschreven. En u kunt zien dat het gemakkelijk te lezen is en zelfs gemakkelijk te debuggen.

Bij het schrijven van complexe instructies (wat je zeker zult doen na het lezen van deze handleiding), zijn blokinstructies altijd goed. En terwijl u geneste If-instructies schrijft, kunt u voor de duidelijkheid ook inspringing in uw regel toevoegen.

Snelle tip – Er is een uitzondering die u kunt negeren door Else aan het einde van uw code te gebruiken wanneer u IF-Then-Elseif-Else gebruikt. Dit is erg handig als u geen enkele taak hoeft uit te voeren terwijl geen van de voorwaarden WAAR is in uw verklaring.

8 concrete voorbeelden

Hier heb ik enkele eenvoudige maar nuttige voorbeelden vermeld die u kunt volgen.

1. Geneste ALS

Het beste deel van de IF-instructie is dat u geneste instructies maakt. U kunt aan de eerste voorwaarde een tweede voorwaarde toevoegen.

nesting if schrijven met vba if-instructie
 Sub NestIF() Dim res As Long res = MsgBox("Do you want to save this file?", vbYesNo, "Save File") If res = vbYes Then 'start of first IF statement If ActiveWorkbook.Saved <> True Then 'start of second IF statement. ActiveWorkbook.SaveMsgBox ("Workbook Saved") Else MsgBox "This workbook is already saved" End If 'end of second IF statement Else MsgBox "Make Sure to save it later" End If ' end of first IF statement End Sub

In het bovenstaande voorbeeld hebben we een geneste IF-instructie gebruikt. Wanneer u deze macro uitvoert , krijgt u een berichtvenster met de opties OK en Annuleren. Het werk van de voorwaardelijke verklaring begint daarna.

Eerst wordt de knop geëvalueerd waarop u hebt geklikt. Als u op “Ja” hebt geklikt, nest het dan om te evalueren of uw spreadsheet is opgeslagen of niet.

Als uw werkmap niet is opgeslagen, wordt deze opgeslagen en ontvangt u een bericht. En als de werkmap al is opgeslagen, wordt er een bericht over weergegeven.

Maar als u op de knop klikt, is de voorwaarde van de eerste macro FALSE en krijgt u pas later een bericht om uw boek op te slaan.

Het basisidee van deze code is dat de tweede voorwaarde volledig afhankelijk is van de eerste voorwaarde. Als de eerste voorwaarde ONWAAR is, wordt de tweede voorwaarde niet geëvalueerd.

Meer informatie over geneste IF

2. Maak een lus met IF en GoTo

Je kunt ook een lus maken met goto met IF. De meeste programmeurs vermijden het schrijven van loops op deze manier omdat we betere manieren hebben om loops te maken . Maar het kan geen kwaad om te leren hoe we het kunnen doen.

 Sub auto_open() Alert: If InputBox("Enter Username") <> "Puneet" Then GoTo Alert Else MsgBox "Welcome" End If End Sub

In het bovenstaande voorbeeld hebben we een condition-instructie gebruikt om een lus te maken. We hebben auto_open als macronaam gebruikt, zodat elke keer dat iemand het bestand opent, deze macro wordt uitgevoerd.

De gebruiker moet een gebruikersnaam invoeren en als die gebruikersnaam niet gelijk is aan “Puneet”, wordt de code herhaald en wordt het invoervak opnieuw weergegeven. En als u de juiste tekst invoert, heeft deze toegang tot het bestand.

3. Controleer of een cel een getal bevat

Hier hebben we een voorwaarde gebruikt om te controleren of de actieve cel een numerieke waarde bevat of niet.

gebruik vba if-instructie om het nummer in de cel te controleren
 Sub check_number() If IsNumeric(Range("B2").Value) Then MsgBox "Yes, active cell has a number." Else MsgBox "No, active cell hasn't a number." End If End Sub

In het bovenstaande voorbeeld heb ik een voorwaarde geschreven met behulp van de isnumerieke functie in VBA, die dezelfde is als de getalfunctie in het werkblad, om te controleren of de waarde van een cel een getal is of niet.

Als de waarde een getal is, retourneert deze WAAR en krijgt u het bericht ‘Ja, de actieve cel heeft een numerieke waarde’. En als de waarde geen getal is, ontvangt u het bericht ‘Geen numerieke waarde in actieve cel’.

4. Gebruik OF en EN met ALS

Met IF OR kunt u twee of meer voorwaarden opgeven en een taak uitvoeren als ten minste één voorwaarde WAAR is.

 Sub UsingOR() If Range("A1") < 70 Or Range("B1") < 70 Then MsgBox "You Are Pass" Else If Range("A1") < 40 And Range("B1") < 40 Then MsgBox "You Are Pass" Else MsgBox "You Are Fail" End If End If End Sub

In het bovenstaande voorbeeld, op regel 2, hebben we twee voorwaarden die OR gebruiken. Als een student voor een van de vakken 70 punten behaalt, is het resultaat een “Pass”. En in regel 7 hebben we twee voorwaarden die de AND-operator gebruiken. Indien een student voor beide vakken meer dan 40 punten behaalt, is het resultaat “Pass”.

Met IF AND kunt u meerdere voorwaarden opgeven en een taak uitvoeren als alle voorwaarden WAAR zijn.

5. Gebruik Niet met IF

Door NOT in een voorwaarde te gebruiken, kunt u TRUE in FALSE en FALSE in TRUE veranderen.

VBA INDIEN NEE

 Sub IF_Not() If Range(“D1”) <= 40 And Not Range(“E1”) = “E” Then MsgBox "You Are Pass." Else MsgBox "You Are Fail." End If End Sub

In het bovenstaande voorbeeld hebben we NOT in de voorwaarde gebruikt. We hebben twee cellen met de score van het onderwerp. In de ene cel staat de score in cijfers en in een andere cel in cijfers.

  • Als een student cijfers boven de 40 heeft voor het eerste vak en boven de E voor het tweede vak, is er sprake van een PASS.
  • Als een student cijfers boven de 40 heeft voor het eerste vak en boven de E voor het tweede vak, is hij/zij geslaagd.

Dus elke keer dat de cijfers van een leerling hoger zijn dan 40 en een ander cijfer dan E, ontvangen we het bericht ‘Je bent geslaagd’ of ‘Je bent niet geslaagd’.

6. ALS-aangifte met een selectievakje

Nu gebruiken we hier een selectievakje om een macro uit te voeren.

gebruik vba if-instructie met selectievakje
 Sub ship_as_bill() If Range("D15") = True Then Range("D17:D21") = Range("C17:C21") Else If Range(“D15”) = False Then Range("D17:D21").ClearContents Else MsgBox (“Error!”) End If End If End Sub

In het bovenstaande voorbeeld hebben we een IF-instructie gebruikt om de voorwaarde te creëren dat als het selectievakje is ingeschakeld, het bereik D17:D21 gelijk is aan het bereik C17:C21. En als het vakje niet is aangevinkt, is het bereik D17:D21 leeg.

Met deze techniek kunnen we het factuuradres als verzendadres gebruiken en als we nog iets nodig hebben, kunnen we het adres handmatig invoeren.

7. Controleer of een cel is samengevoegd

En hier schrijven we een voorwaarde om een waarschuwing te ontvangen als een actieve cel wordt samengevoegd.

controleer of een cel is samengevoegd met de vba if-instructie
 Sub MergeCellCheck() If ActiveCell.MergeCells Then MsgBox "Active Cell Is Merged" Else MsgBox "Active Cell Is Not Merged" End If End Sub

In de bovenstaande code hebben we samengevoegde cellen gebruikt om te controleren of de actieve cel is samengevoegd of niet. Als de actieve cel wordt samengevoegd, retourneert de voorwaarde hiervoor een waarschuwing .

8. Verwijder de hele rij als een cel leeg is

Hier gebruiken we IF om te controleren of een rij leeg is of niet. En als deze regel leeg is, verwijdert de instructie die specifieke regel.

 Sub DeleteRow() If Application.CountA(ActiveCell.EntireRow) = 0 Then ActiveCell.EntireRow.Delete Else MsgBox Application.CountA(ActiveCell.EntireRow) & "Cell(s) have values in this row" End If End Sub

In het bovenstaande voorbeeld worden eerst de cellen gecontroleerd die een waarde hebben. Als het aantal cellen met een waarde nul is, verwijdert de voorwaarde de actieve rij, anders wordt de waarschuwing geretourneerd die het aantal cellen met een waarde aangeeft.

Conclusie

Zoals ik al zei, dit is een van de belangrijkste onderdelen van VBA en je moet het leren als je VBA onder de knie wilt krijgen. Met de IF-instructie kunt u zowel eenvoudige als complexe codes schrijven. U kunt ook logische operatoren gebruiken en geneste voorwaarden schrijven.

Ik hoop dat deze gids je helpt betere codes te schrijven.

Vertel me dit nu. Schrijft u regelmatig voorwaarden in VBA? Wat voor soort codes schrijf je? Deel uw mening met mij in het opmerkingengedeelte. En vergeet niet deze gids met je vrienden te delen.

Voeg een reactie toe

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *