Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Arbeiten mit Operatoren | VBA Fundamentals
Excel VBA für Geschäftsautomatisierung

Arbeiten mit Operatoren

Swipe um das Menü anzuzeigen

Das Deklarieren von Variablen bietet einen Speicherplatz für Werte. Operatoren dienen dazu, diese Werte zu kombinieren, zu vergleichen und zu prüfen – im Grunde genommen die Art und Weise, wie Geschäftsregeln im Code ausgedrückt werden. "Ist der Lagerbestand unter dem Nachbestellniveau?" ist ein Vergleichsoperator. "Nachbestellen, wenn der Lagerbestand niedrig ist UND das Produkt Elektronik ist" ist ein logischer Operator.

Arithmetische Operatoren

Die meisten verhalten sich wie bei einem Taschenrechner, aber VBA hat zwei Divisionsoperatoren, die tatsächlich unterschiedliche Dinge tun:

Dim total As Double
total = 45 * 3      ' multiplication → 135
total = 100 / 3     ' division → 33.33...
total = 100 \ 3     ' integer division → 33 (drops remainder)
total = 100 Mod 3   ' remainder only → 1
total = 2 ^ 3       ' exponent → 8

Der Backslash (\) und Mod führen oft zu Verwirrung, da sie ähnlich aussehen, aber gegensätzliche Fragen beantworten. 100 \ 3 beantwortet die Frage "Wie oft passt 3 ganzzahlig in 100?" – die Antwort ist 33, und der Rest wird ignoriert. 100 Mod 3 beantwortet die spiegelbildliche Frage: "Was bleibt übrig, nachdem 3 so oft wie möglich ganzzahlig in 100 passt?" – die Antwort ist 1. Zusammengenommen ergeben 33 Gruppen à 3 plus ein Rest von 1 genau 100 – das ist kein Zufall, sondern genau das, wofür diese beiden Operatoren gedacht sind. Diese Kombination eignet sich beispielsweise, um zu berechnen, "wie viele volle Kartons zu je 3 Stück kann ich packen und wie viele Einheiten bleiben für einen unvollständigen Karton übrig?" oder um zu prüfen, ob eine Zeilennummer gerade ist (i Mod 2 = 0).

Vergleichsoperatoren

Diese liefern True oder False zurück:

44 > 30      ' True
44 = 44      ' True
"Office" = "office"   ' False — VBA's default string comparison IS case-sensitive
44 <> 30     ' True (not equal)

Logische Operatoren

Diese verbinden zwei oder mehr Vergleiche zu einem einzigen True/False-Ergebnis – genau so werden Geschäftsregeln mit mehreren Bedingungen ausgedrückt:

If category = "Electronics" And stock < 30 Then
    ' triggers only if BOTH are true
End If
 
If category = "Office" Or category = "Electronics" Then
    ' triggers if EITHER is true
End If
 
If Not (stock < reorderLevel) Then
    ' triggers if stock is NOT below reorder level
End If

And erfordert, dass jede durch ihn verbundene Bedingung True ist, damit der gesamte Ausdruck True ergibt – das erste Beispiel greift also nur für Elektronikprodukte, die tatsächlich einen niedrigen Lagerbestand haben, nicht für jedes Produkt mit niedrigem Bestand, unabhängig von der Kategorie. Or benötigt nur eine Bedingung mit True, um den gesamten Ausdruck zu erfüllen – so prüft man, ob ein Wert zu einer kleinen Menge akzeptabler Werte gehört. Not kehrt ein True/False-Ergebnis einfach um – oft verwendet, wie im dritten Beispiel, um eine Regel als "NICHT die schlechte Bedingung" auszudrücken, wenn das natürlicher klingt als die gute Bedingung direkt zu formulieren.

Zeichenketten-Verkettung

Verbindet Text mit & (nicht +, das in VBA für Zahlen reserviert ist):

Dim message As String
message = "Product: " & productName & " | Stock: " & currentStock
' Product: Wireless Mouse | Stock: 134

Beachte, dass currentStock eine Zahl (134) ist, kein Text, aber dennoch ohne Umwandlung in die Zeichenkette eingefügt wird – VBA wandelt eine Zahl beim Verwenden von & automatisch in ihre Textdarstellung um. Diese Bequemlichkeit ist genau der Grund, warum & gegenüber + für die Verkettung von Text bevorzugt wird: Würde man "Stock: " + currentStock schreiben, würde VBA versuchen, den gesamten Ausdruck als arithmetisch zu interpretieren und entweder einen Fehler ausgeben oder ein verwirrendes Ergebnis liefern, je nach Kontext. & bedeutet immer "als Text verbinden", ohne Mehrdeutigkeit.

Aufgabe

  1. Mit den Daten des Monitor Arms (Price 89.99, Stock 18, Reorder Level 10) einen Ausdruck schreiben, der prüft, ob der Lagerbestand kleiner oder gleich Nachbestellniveau plus 10 ist – eine "bald knapp"-Warnung statt eines harten Alarms.
  2. Eine verkettete Nachricht erstellen: "Monitor Arm is at 18 units (reorder at 10)" unter Verwendung von Variablen, nicht fest codiertem Text.
Hinweis
expand arrow

1. Der Ausdruck „kommt in die Nähe“

  • Zuerst werden drei Variablen benötigt: eine für den Lagerbestand (18), eine für den Meldebestand (10) und dann ein Ausdruck, der diese vergleicht.
  • „Kleiner oder gleich“ ist ein einzelner Vergleichsoperator <=.
  • Die Formulierung „Meldebestand plus 10“ bedeutet, dass der Lagerbestand nicht direkt mit 10 verglichen wird – sondern mit einem berechneten Wert. Diese Addition wird direkt im Vergleich geschrieben: stock <= reorderLevel + 10.
  • Um das Ergebnis tatsächlich zu sehen, wird es einer Boolean-Variablen zugewiesen.
  • Rechne von Hand aus, was 10 + 10 ergibt, bevor du das Programm ausführst, damit du weißt, ob 18 <= 20 als True oder False zurückgegeben werden sollte, und überprüfe, ob dein Code übereinstimmt.

2. Die Nachricht zusammensetzen

  • Der Operator, der Text miteinander verbindet, ist &, nicht +.
  • Betrachte die gewünschte Ausgabe Schritt für Schritt: "Monitor Arm is at " + (die Lagerzahl) + " units (reorder at " + (der Meldebestand) + ")". Zähle die Teile – es sind fünf, abwechselnd wörtlicher Text in Anführungszeichen und eine Variable.
  • Die Aufgabe verlangt „mit Variablen, nicht fest codiertem Text“ – das bedeutet, dass die 18 und 10 in deiner endgültigen Nachricht aus den Variablen für Lagerbestand und reorderLevel stammen und nicht als feste Zahlen im String stehen dürfen.
  • Beim Verketten einer Zahl mit & ist keine Umwandlung nötig – VBA wandelt sie automatisch in Text um, sodass eine numerische Variable direkt in den String eingefügt werden kann.
  • Baue alles zuerst in eine String-Variable ein (message = ...), und zeige sie dann mit MsgBox message an, damit du überprüfen kannst, ob die Ausgabe exakt wie erwartet ist, einschließlich Klammern und Leerzeichen.

Oder verwende folgenden Code

Öffne Section_2_VBA_Fundamentals.xlsm, drücke Alt+F11 und verwende das Modul, das du für diese Arbeitsmappe bereits nutzt (füge eines über Einfügen → Modul hinzu, falls noch nicht vorhanden – nach demselben Muster wie modIntro in Abschnitt 1, du könntest es modFundamentals nennen).

Sub MonitorArmCheck()
    Dim stock As Integer
    Dim reorderLevel As Integer
    Dim isGettingClose As Boolean
    Dim message As String

    stock = 18
    reorderLevel = 10

    ' Part 1 — the "getting close" check
    isGettingClose = stock <= reorderLevel + 10
    MsgBox isGettingClose

    ' Part 2 — the concatenated message
    message = "Monitor Arm is at " & stock & " units (reorder at " & reorderLevel & ")"
    MsgBox message
End Sub

Klicke irgendwo in das Sub und drücke dann F5. Es sollten zwei Meldungsfenster nacheinander erscheinen – zuerst True (da 18 ≤ 20), dann der Satz.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 2. Kapitel 2
some-alt