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
- 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.
- Eine verkettete Nachricht erstellen: "Monitor Arm is at 18 units (reorder at 10)" unter Verwendung von Variablen, nicht fest codiertem Text.
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 + 10ergibt, bevor du das Programm ausführst, damit du weißt, ob18 <= 20alsTrueoderFalsezurü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
18und10in deiner endgültigen Nachricht aus den Variablen für Lagerbestand undreorderLevelstammen 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 mitMsgBox messagean, 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.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen