Wie verwende ich die if-anweisung mit else in vba?
Wenn Sie ein fortgeschrittener VBA-Benutzer sein möchten, ist eine IF-Anweisung ein Muss. Und ich glaube, Sie kennen das Wort IF bereits und verwenden es häufig als Tabellenkalkulationsfunktion.
In VBA funktioniert IF auf die gleiche Weise. Seine Grundidee besteht darin, eine Aufgabe auszuführen, wenn eine Bedingung WAHR ist, andernfalls nichts zu tun oder etwas anderes zu tun. Sie können sowohl einfach als auch in komplexen Situationen schreiben.
Zum besseren Verständnis habe ich es in drei verschiedene Teile unterteilt.
- Wird zum Testen bereitgestellt.
- Eine Aufgabe, die ausgeführt werden soll, wenn die Bedingung TRUE ist.
- Eine Aufgabe, die ausgeführt werden soll, wenn die Bedingung FALSE ist.
So sieht es im echten Leben aus:
Im obigen Beispiel ist Regen eine Bedingung. Wenn diese Bedingung WAHR ist, öffnet der Junge seinen Regenschirm und wenn die Bedingung FALSCH ist, trägt er seinen Hut. Bedingungen sind in unserem täglichen Leben allgegenwärtig. Aber jetzt kehren wir in unsere Codierungswelt zurück und erkunden sie.
Syntax: VBA IF
In VBA gibt es drei verschiedene Arten von IF-Anweisungen.
1. WENN-Dann
IF THEN ist die einfachste Form einer IF-Anweisung. Wir müssen lediglich eine zu prüfende Bedingung angeben. Wenn diese Bedingung TRUE ist, wird eine Aufgabe ausgeführt. Wenn diese Bedingung jedoch FALSE ist, wird nichts unternommen und die Zeile wird sofort übersprungen.
Syntax
IF condition Then statement[s]
In der obigen Syntax müssen wir eine auszuwertende Bedingung und eine auszuführende Aufgabe angeben, wenn diese Bedingung TRUE ist.
Beispiel
Im obigen Beispiel haben wir überprüft, ob Zelle A1 den Wert 10 enthält. Wenn dies der Fall ist, zeigt die Anweisung ein Meldungsfeld mit der Meldung „Zelle A1 hat den Wert 10“ an.
Sub CheckValue() If Range("A1").Value = 10 Then MsgBox ("Cell A1 has value 10") End Sub
2. WENN-dann-sonst
Sie können die IF-Then-Else-Anweisung verwenden, wenn Sie eine bestimmte Aufgabe ausführen möchten, wenn eine Bedingung TRUE ist, und eine andere Aufgabe, wenn eine Bedingung FALSE ist.
Syntax
IF Condition Then Statement[s] Else Statement[s] End If
Mit der obigen Syntax können wir je nach Ergebnis einer Bedingung unterschiedliche Aufgaben ausführen. Wenn die Bedingung TRUE ist, wird die Anweisung ausgeführt, die Sie nach „Then“ erwähnt haben. Wenn die Bedingung FALSE ist, wird die Anweisung ausgeführt, die Sie nach „Else“ erwähnt haben.
Beispiel
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
Im obigen Beispiel habe ich die IF-Then-Else-Anweisung verwendet, um den Wert in Zelle A1 zu überprüfen.
Wenn Zelle A1 einen Wert von 10 hat, erhalten Sie eine Meldung mit der Meldung „Zelle A1 hat einen Wert von 10“. Wenn in Zelle A1 ein anderer Wert vorhanden ist, wird eine Meldung mit der Meldung „Zelle A1 hat einen anderen Wert als“ angezeigt 10“. Hier können wir also basierend auf dem Bedingungsergebnis verschiedene Aufgaben ausführen.
3. WENN-Dann-Sonst-Sonst
Dies ist der nützlichste und wichtigste IF-Typ, der Ihnen beim Schreiben erweiterter Bedingungsanweisungen hilft. In diesem Typ können Sie die zweite Bedingung angeben, nachdem Sie Ihre erste Bedingung ausgewertet haben.
Syntax
IF Condition Then Statement[s] Elseif Condition Then Statement[s] Else Statement[s] End If
In der obigen Syntax haben wir:
- Unter der Bedingung zu bewerten.
- Eine Anweisung, die ausgeführt werden soll, wenn diese Bedingung TURE ist.
- Wenn diese Bedingung FALSCH ist, müssen wir die zweite Bedingung auswerten.
- Und wenn die zweite Bedingung WAHR ist, müssen wir eine Erklärung abgeben.
- Wenn jedoch beide Bedingungen, die erste und die zweite, FALSCH sind, wird eine Aussage gemacht, die Sie nach „Sonst“ erwähnt haben.
Und das Beste daran ist, dass Sie in Ihrem Code beliebig viele „Elseifs“ verwenden können. Das bedeutet, dass Sie in Ihrer Erklärung beliebig viele Bedingungen angeben können.
Beispiel
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
Im obigen Beispiel haben wir ein Makro geschrieben, das zunächst Zelle A2 auf den Wert „A“ überprüft. Wenn die Zelle die Bewertung „A“ hat, gibt die Anweisung die Meldung „Sehr gut“ zurück.
Diese Anweisung überprüft zunächst Zelle A2 auf den Wert „A“ und wenn die Zelle die Bewertung „A“ hat, gibt die Anweisung die Meldung „Sehr gut“ zurück.
Und wenn die erste Bedingung FALSCH ist, wird die zweite Bedingung ausgewertet und die Meldung „Gut“ zurückgegeben, wenn die Zelle die Bewertung „B“ hat.
Und wenn die zweite Bedingung falsch ist, wird zur dritten Bedingung übergegangen und so weiter. Wenn letztendlich alle fünf Bedingungen falsch sind, wird der Code ausgeführt, den ich nach dem Rest geschrieben habe.
Das Geheimnis beim Schreiben einer IF-Anweisung in VBA
Jetzt kennen Sie alle Arten von IS und können je nach Aufgabe, die Sie ausführen müssen, eine auswählen. Lass mich dir ein Geheimnis verraten.
Einzeilige IF-Anweisung vs. Block-IF-Anweisung
Sie können eine IF-Anweisung auf zwei verschiedene Arten schreiben und beide haben Vor- und Nachteile. Ansehen.
1. Einzeilige Anweisung
Die einzeilige Anweisung ist perfekt, wenn Sie die IF-Then-Anweisung verwenden. Die Grundlage für die Verwendung einer Zeilenanweisung besteht darin, Ihren gesamten Code in eine einzige Zeile zu schreiben.
If A1 = 10 Then Msgbox("Cell A1 has value 10")
In der obigen Anweisung haben wir eine IF-Anweisung geschrieben, um auszuwerten, ob Zelle A1 einen Wert von 10 hat. Anschließend wird ein Meldungsfeld angezeigt. Die beste Vorgehensweise für die Verwendung einer einzeiligen Anweisung ist, wenn Sie einfachen Code schreiben müssen. Die Verwendung von einzeiligem Code für komplexe und lange Deklarationen ist schwer zu verstehen.
Kurzer Tipp: Wenn Sie einzeiligen Code schreiben, müssen Sie Endif nicht verwenden, um die Anweisung abzuschließen.
2. Blockdeklaration
Eine Block-Anweisung ist perfekt, wenn Sie Ihren Code auf anständige und verständliche Weise schreiben möchten. Wenn Sie eine Blockanweisung schreiben, können Sie mehrere Zeilen in Ihrem Makro verwenden und so einen sauberen und sauberen Code erhalten.
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
Im obigen Beispiel haben wir eine IF-Then-Else-Anweisung in Blöcken geschrieben. Und Sie können sehen, dass es leicht zu lesen und sogar leicht zu debuggen ist.
Beim Schreiben komplexer Anweisungen (was Sie nach dem Lesen dieses Handbuchs auf jeden Fall tun werden) sind Blockanweisungen immer gut. Und beim Schreiben verschachtelter If-Anweisungen können Sie der Klarheit halber auch Einrückungen in Ihre Zeile einfügen.
Kurzer Tipp – Sie haben eine Ausnahme, die Sie ignorieren können, indem Sie Else am Ende Ihres Codes verwenden, wenn Sie IF-Then-Elseif-Else verwenden. Dies ist sehr nützlich, wenn Sie keine Aufgabe ausführen müssen, wenn keine der Bedingungen in Ihrer Anweisung WAHR ist.
8 konkrete Beispiele
Hier habe ich einige einfache, aber nützliche Beispiele aufgelistet, denen Sie folgen können.
1. Verschachteltes IF
Das Beste an der IF-Anweisung ist, dass Sie verschachtelte Anweisungen erstellen. Sie können der ersten Bedingung eine zweite Bedingung hinzufügen.
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
Im obigen Beispiel haben wir eine verschachtelte IF-Anweisung verwendet. Wenn Sie dieses Makro ausführen , wird ein Meldungsfeld mit den Optionen „OK“ und „Abbrechen“ angezeigt . Danach beginnt die Arbeit der bedingten Anweisung.
Zunächst wird der von Ihnen angeklickte Button ausgewertet. Wenn Sie auf „Ja“ geklickt haben, verschachteln Sie es, um zu beurteilen, ob Ihre Tabelle gespeichert wird oder nicht.
Wenn Ihre Arbeitsmappe nicht gespeichert ist, wird sie gespeichert und Sie erhalten eine Nachricht. Und wenn die Arbeitsmappe bereits gespeichert ist, wird eine entsprechende Meldung angezeigt.
Wenn Sie jedoch auf die Schaltfläche klicken, ist die Bedingung des ersten Makros FALSCH und Sie erhalten erst später eine Meldung, Ihr Buch zu speichern.
Die Grundidee dieses Codes besteht darin, dass die zweite Bedingung vollständig von der ersten Bedingung abhängt. Wenn die erste Bedingung FALSCH ist, wird die zweite Bedingung nicht ausgewertet.
Erfahren Sie mehr über Nested IF
2. Erstellen Sie eine Schleife mit IF und GoTo
Sie können auch eine Schleife erstellen, indem Sie goto mit IF verwenden. Die meisten Programmierer vermeiden es, Schleifen auf diese Weise zu schreiben, weil wir bessere Möglichkeiten zum Schleifen haben. Aber es schadet nicht, zu lernen, wie wir es schaffen können.
Sub auto_open() Alert: If InputBox("Enter Username") <> "Puneet" Then GoTo Alert Else MsgBox "Welcome" End If End Sub
Im obigen Beispiel haben wir eine Bedingungsanweisung verwendet, um eine Schleife zu erstellen. Wir haben auto_open als Makronamen verwendet, damit jedes Mal, wenn jemand die Datei öffnet, dieses Makro ausgeführt wird.
Der Benutzer muss einen Benutzernamen eingeben. Wenn dieser Benutzername nicht „Puneet“ entspricht, wird der Code wiederholt und das Eingabefeld erneut angezeigt. Und wenn Sie den richtigen Text eingeben, kann auf die Datei zugegriffen werden.
3. Überprüfen Sie, ob eine Zelle eine Zahl enthält
Hier haben wir eine Bedingung verwendet, um zu prüfen, ob die aktive Zelle einen numerischen Wert enthält oder nicht.
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
Im obigen Beispiel habe ich mithilfe der Funktion isnumeric in VBA eine Bedingung geschrieben, die mit der Zahlenfunktion im Arbeitsblatt identisch ist, um zu prüfen, ob der Wert einer Zelle eine Zahl ist oder nicht.
Wenn der Wert eine Zahl ist, wird TRUE zurückgegeben und Sie erhalten die Meldung „Ja, die aktive Zelle hat einen numerischen Wert“. Und wenn der Wert keine Zahl ist, erhalten Sie die Meldung „Kein numerischer Wert in der aktiven Zelle“.
4. Verwenden Sie OR und AND mit IF
Mit IF OR können Sie zwei oder mehr Bedingungen angeben und eine Aufgabe ausführen, wenn mindestens eine von allen Bedingungen WAHR ist.
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
Im obigen Beispiel haben wir in Zeile 2 zwei Bedingungen, die OR verwenden. Wenn ein Student in einem der Fächer 70 Punkte erreicht, ist das Ergebnis ein „Bestanden“. Und in Zeile 7 haben wir zwei Bedingungen, die den AND-Operator verwenden. Erreicht ein Studierender in beiden Fächern mehr als 40 Punkte, lautet das Ergebnis „bestanden“.
Mit IF AND können Sie mehrere Bedingungen angeben und eine Aufgabe ausführen, wenn alle Bedingungen WAHR sind.
5. Nicht mit IF verwenden
Durch die Verwendung von NOT in einer Bedingung können Sie TRUE in FALSE und FALSE in TRUE ändern.
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
Im obigen Beispiel haben wir NOT in der Bedingung verwendet. Wir haben zwei Zellen mit der Punktzahl des Probanden. In einer Zelle ist die Punktzahl in Zahlen angegeben und in einer anderen Zelle sind Noten angegeben.
- Wenn ein Schüler im ersten Fach eine Note über 40 und im zweiten Fach eine Note über E hat, gilt die Prüfung als BESTANDEN.
- Wenn ein Schüler im ersten Fach eine Note über 40 und im zweiten Fach eine Note über E hat, gilt er als BESTANDEN.
Jedes Mal, wenn die Noten eines Schülers über 40 liegen und eine andere Note als E haben, erhalten wir die Meldung „Sie haben bestanden“ oder „Sie haben nicht bestanden“.
6. IF-Deklaration mit einer Checkbox
Hier verwenden wir nun ein Kontrollkästchen, um ein Makro auszuführen.
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
Im obigen Beispiel haben wir eine IF-Anweisung verwendet, um eine Bedingung zu erstellen, dass bei aktiviertem Kontrollkästchen der Bereich D17:D21 gleich dem Bereich C17:C21 ist. Und wenn das Kontrollkästchen nicht aktiviert ist, ist der Bereich D17:D21 leer.
Mit dieser Technik können wir die Rechnungsadresse als Lieferadresse verwenden und wenn wir noch etwas benötigen, können wir die Adresse manuell eingeben.
7. Überprüfen Sie, ob eine Zelle zusammengeführt ist
Und hier schreiben wir eine Bedingung, um eine Benachrichtigung zu erhalten, wenn eine aktive Zelle zusammengeführt wird.
Sub MergeCellCheck() If ActiveCell.MergeCells Then MsgBox "Active Cell Is Merged" Else MsgBox "Active Cell Is Not Merged" End If End Sub
Im obigen Code haben wir verbundene Zellen verwendet, um zu prüfen, ob die aktive Zelle verbunden ist oder nicht. Wenn die aktive Zelle zusammengeführt wird, gibt die Bedingung eine entsprechende Warnung zurück.
8. Löschen Sie die gesamte Zeile, wenn eine Zelle leer ist
Hier verwenden wir IF, um zu prüfen, ob eine Zeile leer ist oder nicht. Und wenn diese Zeile leer ist, löscht die Anweisung diese bestimmte Zeile.
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
Im obigen Beispiel werden zunächst die Zellen überprüft, die einen Wert haben. Wenn die Anzahl der Zellen mit einem Wert Null ist, löscht die Bedingung die aktive Zeile. Andernfalls wird eine Warnung zurückgegeben, die die Anzahl der Zellen mit einem Wert angibt.
Abschluss
Wie gesagt, dies ist einer der wichtigsten Teile von VBA und Sie müssen ihn lernen, wenn Sie VBA beherrschen wollen. Mit der IF-Anweisung können Sie sowohl einfache Codes als auch komplexe Codes schreiben. Sie können auch logische Operatoren verwenden und verschachtelte Bedingungen schreiben.
Ich hoffe, dieser Leitfaden hilft Ihnen, bessere Codes zu schreiben.
Jetzt erzähl mir das. Schreiben Sie häufig Bedingungen in VBA? Welche Art von Codes schreiben Sie? Bitte teilen Sie mir Ihre Meinung im Kommentarbereich mit. Und vergessen Sie nicht, diesen Leitfaden mit Ihren Freunden zu teilen.