VBA-Vergleich Operatoren: Ungleich, Less als oder gleich

โšก Intelligente Zusammenfassung

VBA-Vergleich OperaMit den Operatoren `tors` kรถnnen Sie zwei Werte vergleichen und `true` oder `false` zurรผckgeben. Diese Seite definiert die sechs Operatoren, zeigt ihre Anwendung in einer `If`-Anweisung, erklรคrt den Vergleich von Text und Datumsangaben und listet Fehler auf, die zu falschen Ergebnissen fรผhren.

  • ๏ธ Zweck: Vergleichsoperatoren validieren Daten, indem sie eine Bedingung prรผfen, die entweder zu โ€žWahrโ€œ oder โ€žFalschโ€œ ausgewertet wird.
  • ๐Ÿ”ข Sechs OperaTore: Gleich, kleiner als, grรถรŸer als, ungleich, kleiner oder gleich und grรถรŸer oder gleich.
  • ๐Ÿ” Doppelrolle: Das Gleichheitszeichen vergleicht innerhalb einer Bedingung und weist auรŸerhalb einen Wert zu.
  • ๐Ÿงช Wenn-Anweisung: Jeder Vergleich wird innerhalb einer If-, ElseIf- oder Do-While-Anweisung platziert, um zu steuern, welcher Code ausgefรผhrt wird.
  • ๐Ÿ”ค Text und Daten: Zeichenketten werden zeichenweise verglichen, Datumsangaben hingegen wie Seriennummern.
  • โš ๏ธ Prรคzisionsfalle: Two Double Werte, die identisch aussehen, kรถnnen einen Gleichheitstest nicht bestehen; vergleichen Sie daher eine gerundete Differenz.

VBA-Vergleich Operatoren

VBA-Vergleich Operatoren

Dies sind Operatoren, die zum Vergleichen von Werten verwendet werden. Zu den Vergleichsoperatoren gehรถren gleich, kleiner als, grรถรŸer als und ungleich.

Vergleichsoperatoren werden verwendet, um Werte zu Validierungszwecken zu vergleichen. Nehmen wir an, Sie entwickelnping Eine einfache Kassenanwendung. In dieser Anwendung mรถchten Sie die eingegebenen Werte vor dem Buchen รผberprรผfen. Hierfรผr kรถnnen Sie Vergleichsoperatoren verwenden. Dieser Operator prรผft, ob negative Zahlen vorliegen oder ob der gezahlte Betrag den Rechnungsbetrag nicht รผbersteigt. Vergleichsoperatoren sind in solchen Situationen sehr hilfreich.

Jeder Vergleich liefert einen von zwei Werten, entweder โ€žWahrโ€œ oder โ€žFalschโ€œ, niemals eine Zahl. Auf dieses Ergebnis reagiert eine If-Anweisung.

In der folgenden Tabelle sind die in VBA.

OperaDo. Beschreibung
= Gleich: prรผft, ob zwei Werte gleich sind. Wird auch als Zuweisungsoperator verwendet
< Less als: Prรผft, ob der Wert links kleiner ist als der Wert rechts.
> GrรถรŸer als: Prรผft, ob der Wert links grรถรŸer ist als der Wert rechts.
<> Ungleich: Prรผft, ob zwei Werte voneinander verschieden sind.
<= Less grรถรŸer oder gleich: Prรผft, ob der Wert links kleiner oder gleich dem Wert rechts ist.
>= GrรถรŸer oder gleich: Prรผft, ob der Wert links grรถรŸer oder gleich dem Wert rechts ist.

Wenn man sieht, wie jeder Operator auf zwei Variablen angewendet wird, lรคsst sich das Ergebnis leichter vorhersagen.

VBA-Vergleich OperaToren mit Beispiel

Die folgende Tabelle zeigt den Excel VBA Vergleich OperaToren mit Beispielen und Ausgabe.

S / N OperaDo. Beispiel Ausgang
1 = Wenn x = z Dann Gibt โ€žtrueโ€œ zurรผck, wenn sie gleich sind, andernfalls wird โ€žfalseโ€œ zurรผckgegeben
2 < Wenn x < z Dann Gibt โ€žtrueโ€œ zurรผck, wenn x kleiner als z ist, andernfalls wird โ€žfalseโ€œ zurรผckgegeben
3 > Wenn x > z Dann Gibt โ€žtrueโ€œ zurรผck, wenn x grรถรŸer als z ist, andernfalls wird โ€žfalseโ€œ zurรผckgegeben
4 <> Wenn x <> z Dann Gibt โ€žtrueโ€œ zurรผck, wenn sie nicht gleich sind, andernfalls wird โ€žfalseโ€œ zurรผckgegeben
5 <= Wenn x <= z Dann Gibt โ€žtrueโ€œ zurรผck, wenn x kleiner oder gleich z ist, andernfalls wird โ€žfalseโ€œ zurรผckgegeben
6 >= Wenn x >= z dann Gibt โ€žtrueโ€œ zurรผck, wenn x grรถรŸer oder gleich z ist, andernfalls wird โ€žfalseโ€œ zurรผckgegeben

Beispiel-Quellcode

Gleicher Vergleich OperaDo.

If 2 = 1 Then
    MsgBox "True", vbOKOnly, "Equal Operator"
Else
    MsgBox "False", vbOKOnly, "Equal Operator"
End If

HIER,

  • โ€žWenn 2 = 1, dannโ€ฆ sonstโ€ฆ Ende wennโ€œ verwendet die if-Anweisung, um die Bedingung โ€ž2 = 1โ€œ auszuwerten
  • "NachrichtBox... " Ist eine integrierte Funktion, die ein Meldungsfeld anzeigt.
    • Der erste Parameter โ€žTrueโ€œ oder โ€žFalseโ€œ wird im Meldungsfeld angezeigt. In unserem Beispiel ist 2 nicht gleich 1, daher wird im Meldungsfeld โ€žfalseโ€œ angezeigt.
    • Der zweite Parameter โ€žvbOKOnlyโ€œ ist die Schaltflรคche, die im Meldungsfeld angezeigt wird
    • Der dritte Parameter โ€žGleich Operatorโ€œ ist der Titel des Meldungsfeldes.

Die Ausfรผhrung des obigen Codes fรผhrt zu folgenden Ergebnissen

Gleich OperaDo.

Dieser einzelne Test ist die einfachste Form. Reale Makros kombinieren Vergleiche und verzweigen zwischen mehreren Ergebnissen.

Wie man den Vergleich nutzt Operators in einer If-Anweisung

Ein Vergleichsoperator ist selten allein nรผtzlich. Sein Ergebnis (Wahr oder Falsch) wird an eine Entscheidungsstruktur รผbergeben, wobei die Wenn-Anweisung am hรคufigsten zum Einsatz kommt. Das folgende Beispiel wertet einen Wert aus Zelle A1 aus und gibt das Ergebnis daneben aus.

Sub GradeScore()
    Dim Score As Long

    Score = Sheet1.Range("A1").Value

    If Score >= 90 Then
        Sheet1.Range("B1").Value = "Distinction"
    ElseIf Score >= 50 Then
        Sheet1.Range("B1").Value = "Pass"
    ElseIf Score < 0 Then
        MsgBox "A score cannot be negative", vbCritical, "Invalid Entry"
    Else
        Sheet1.Range("B1").Value = "Fail"
    End If
End Sub

Das Makro liest den Score einmal ein und prรผft ihn anschlieรŸend nacheinander anhand von drei Bedingungen. Vier Punkte erklรคren das beobachtete Verhalten.

  • Die Reihenfolge ist entscheidend: VBA stoppt beim ersten Zweig, der True zurรผckgibt. Punktzahl >= 50 bevor Punktzahl >= 90 wรผrde jede hohe Punktzahl als bestanden werten.
  • โ€žSonstโ€œ ist die Auffangklausel: Jeder Wert, der alle vorherigen Tests nicht besteht, wird an den Else-Zweig weitergeleitet, sodass keine Eingabe unbehandelt bleibt.
  • Keine Verkettung: VBA kann nicht lesen 0 <= Punktzahl <= 100. Schreiben Wenn Punktzahl >= 0 und Punktzahl <= 100, dann Verwendung der logische Operatoren stattdessen.
  • Gleicher Test, andere Strukturen: Die gleiche Bedingung treibt Do While und Select Case an, daher werden die Operatoren in jede von Ihnen geschriebene Schleife รผbernommen.

๐Ÿ’ก Tipp: Deklarieren Sie die Variable mit einem numerischen Datentyp, wie gezeigt mit Schwache Punktzahl, solangeWenn der Wert ein Variant bleibt, der Text enthรคlt, โ€ž9โ€œ > โ€ž10โ€œ Gibt True zurรผck, da der Vergleich zeichenweise erfolgt.

Vergleichen von Text und Datum in VBA

Numbers Vergleichen Sie genau so, wie es die Arithmetik nahelegt, aber Text und Datumsangaben folgen ihren eigenen Regeln, und beides รผberrascht Anfรคnger.

Zeichenketten werden zeichenweise anhand ihrer Sortierposition verglichen, daher gibt โ€žAppleโ€œ < โ€žBananaโ€œ True zurรผck. StandardmรครŸig wird bei dem Vergleich zwischen GroรŸ- und Kleinschreibung unterschieden, was bedeutet, dass โ€žguru99โ€œ = โ€žGuru99โ€ gibt False zurรผck. Platzierung Option Text vergleichen Die Anweisung am Anfang des Moduls bewirkt, dass bei jedem Stringvergleich innerhalb dieses Moduls die GroรŸ-/Kleinschreibung ignoriert wird. Fรผr einen einzelnen Test, ohne das Modul zu รคndern, verwenden Sie StrComp mit dem Argument vbTextCompare.

Die Datumsangaben werden als fortlaufende Nummern ab dem 30. Dezember 1899 gespeichert und sind daher direkt mit denselben sechs Operatoren vergleichbar. Schreiben Wenn Fรคlligkeitsdatum < Datum Die Funktion erkennt รผberfรคllige Elemente korrekt, da Date das aktuelle Systemdatum als Seriennummer zurรผckgibt. Eine Ausnahme bilden Datumsangaben im Textformat: โ€ž01/02/2026โ€œ aus einer importierten Datei ist eine Zeichenkette, kein Datum, und muss alphabetisch verglichen werden. Konvertieren Sie diese vor dem Testen mit CDate.

Wer die Regeln fรผr jeden Typ kennt, vermeidet die meisten รœberraschungen, doch selbst erfahrenen Entwicklern unterlaufen immer noch einige Fehler.

Hรคufige Fehler beim Vergleichen von Werten in VBA

Die fรผnf folgenden Probleme sind die Ursache fรผr die meisten Vergleiche, die zu einem unerwarteten Ergebnis fรผhren.

  • Aufgabe fรคlschlicherweise als Vergleich bezeichnet: AuรŸerhalb einer Bedingung, x = 5 Speichert 5 in x. Innerhalb der If-Anweisung wird mit denselben Symbolen auf Gleichheit geprรผft. VBA kennt keinen separaten ==-Operator, daher muss der Kontext sorgfรคltig gelesen werden.
  • Tests Double Werte fรผr exakte Gleichheit: Die gespeicherte Genauigkeit bedeutet, dass 0.1 + 0.2 = 0.3 den Wert False zurรผckgibt. Vergleichen Sie stattdessen die gerundete Differenz, zum Beispiel Wenn Abs(a โ€“ b) < 0.000001, dann.
  • Vergleichen Sie irgendetwas mit Null: Null ist mit nichts gleichzusetzen, nicht einmal mit einem anderen Null. Verwenden Sie IsNull anstelle von = Null.
  • Text mit einer Zahl vergleichen: Eine Zelle mit dem Text โ€ž100โ€œ entspricht nicht der Zahl 100. Konvertieren Sie die Zelle vor dem Test mit CLng oder CDbl.
  • .Text statt .Value lesen: Die .Text-Eigenschaft gibt den angezeigten Text zurรผck, der durch Spaltenbreite und Formatierung gekรผrzt wird. Vergleichen Sie immer .Value.

Laden Sie die obige Excel-Datei herunter. Code

Hรคufig gestellte Fragen

Nein. VBA wertet den ersten Vergleich auf โ€žWahrโ€œ oder โ€žFalschโ€œ aus und vergleicht das Ergebnis anschlieรŸend mit 10, was zu einem irrefรผhrenden Ergebnis fรผhrt. Schreiben Sie die beiden Tests separat und verknรผpfen Sie sie mit der UND-Operation.

Der LIKE-Operator vergleicht eine Zeichenkette mit einem Muster anstatt mit einem exakten Wert. Platzhalter sind beispielsweise der Stern fรผr beliebige Zeichen und das Fragezeichen fรผr ein einzelnes Zeichen, also โ€žGuru99โ€œ Gefรคllt mirGuru*โ€ gibt True zurรผck.

Verwenden Sie den Operator โ€žIstโ€œ, wie in โ€žWenn ws Nichts ist, dannโ€œ. Das Gleichheitszeichen vergleicht Werte, wรคhrend โ€žIstโ€œ prรผft, ob zwei Objektvariablen auf dasselbe Objekt verweisen. Dies ist die einzige gรผltige Prรผfung fรผr Objekte.

Ja. Beschreiben Sie die Regel in einfachen Worten, z. B. โ€žMarkiere alle Bestellungen รผber 500, die vor heute aufgegeben wurdenโ€œ. Ein KI-Assistent liefert dann die passende Bedingung. รœberprรผfen Sie die Grenzwerte, bevor Sie sich darauf verlassen.

Ja. Fรผgen Sie den If-Block und einen KI-Assistenten ein. tracPrรผfen Sie, welcher Zweig jeden Wert abfรคngt und dann auf eine nicht erreichbare ElseIf-Anweisung oder einen Vergleich zwischen Text und einer Zahl hinweist. Bestรคtigen Sie die Korrektur schrittweise.ping durch den Code.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: