Um mit den Werten in Variablen zu rechnen, gibt es verschiedene Arten von Operatoren.
Arithmetische Operatoren
Die typischen „Taschenrechneroperatoren“ werden „arithmetische Operatoren“ genannt und sind für Zahlen aller Art gedacht.
Sub Arithmetik() Dim x As Long, y As Long x = (1 + 2) / 3 x = x + 1 y = x y = x - 1 y = 2 ^ 8 x = x * 2 y = x / 3 Debug.Print y End SubWenn wir den obigen Code ausführen, wird 1 zurückgegeben - obwohl doch zuletzt 4 geteilt durch 3 gerechnet wurde! y ist eine Variable vom Typ Long und kann daher keine Nachkommastellen speichern. Wäre y vom Typ Double, wäre 1,33333333333333 ausgegeben worden, und vom Typ Currency wäre es 1,3333.
Zu den arithmetischen Operatoren zählen auch noch \ (Backslash: Nur der Ganzzahlanteil einer Division wird zurückgegeben) und Mod (Modulo: Der „Rest“ einer Division wird zurückgegeben).
Verkettungsoperatoren
Für Strings gibt es die Verkettungsoperatoren, nämlich + und &.
Sub Verkettungen() Dim text1 As String, text2 As String Dim zahl1 As Long, zahl2 As Long Dim ergebnis As Long text1 = "Vorname " text2 = "Nachname" zahl1 = 1 zahl2 = 2 ergebnis = zahl1 & zahl2 Debug.Print text1 + text2 Debug.Print text1 & text2 Debug.Print text1 & zahl1 Debug.Print zahl1 & zahl2 Debug.Print ergebnis End SubIst einer der beiden Operanden ein String, spielt es keine Rolle, ob man + oder & verwendet, das Ergebnis ist stets eine Verkettung. Wenn allerdings beide Operanden Zahlen sind, wird + als Addition, und & als Verkettung interpretiert. Um Unklarheiten zu vermeiden, sollte man für Verkettungen stets & verwenden.
Im obigen Beispiel geben die beiden letzten Print-Befehle nicht ganz identische Ergebnisse aus: In der letzten Zeile befindet sich ein Leerzeichen vor der 12. Das liegt daran, weil der &-Operator zunächst einen String zurückgibt. In der letzten Zeile wird allerdings ergebnis ausgegeben, welches einen Zahlentyp hat. Das Leerzeichen ist eine Art „Platzhalter“ für ein Vorzeichen; bei negativen Zahlen steht dort ein Minuszeichen. Das Beispiel zeigt, dass man sich um eine „Umrechnung“ zwischen verschiedenen Datentypen nicht kümmern muss. Der Datentyp für das Ergebnis muss nur groß genug sein.
Vergleichsoperatoren
Für Zahlenvergleiche gibt es die Vergleichsoperatoren.
Sub vergleiche() Dim x As Boolean x = (1 = 1) x = (1 < 2) x = (1 > 2) x = (1 <= 2) x = (1 >= 2) x = (1 <> 2) End SubDie Klammern in diesem Beispiel dienen übrigens nur der Übersichtlichkeit. Ohne die Klammern wären die Ergebnisse identisch.
Für Strings gibt es zusätzlich noch den Like−Operator. Mit ihm können Platzhalterzeichen verwendet werden, um zu prüfen, ob ein String einem Muster entspricht:
Debug.Print "Maier" Like "*ai*" WahrFolgende Platzhalterzeichen sind möglich:
* | Like "*er" | findet Maier, Müller, Junker | Eine beliebige Anzahl Zeichen |
? | Like "Ma?er" | findet Maier, Majer, Mayer | Ein beliebiges einzelnes Zeichen |
# | Like "1#3" | findet 103, 113, 123 | Eine einzelne Ziffer |
[ ] | Like "Ma[iy]er" | findet Maier und Mayer, aber nicht Majer | Eines der Zeichen in den Klammern |
! | Like "Ma[!iy]er" | findet Majer, aber nicht Maier oder Mayer | Ein nicht in den Klammern aufgelistetes Zeichen |
- | Like "b[a-c]d" | findet bad, bbd, bcd | Ein Zeichen im angegebenen Bereich |
Logische Operatoren
Logische Operatoren geben Wahr oder Falsch zurück. Ist einer der Operanden Null, ist das Ergebnis stets Null.
Sub Logik() Dim x As Boolean x = True And False x = True Or False x = Not True x = True Xor False x = True Eqv False x = True Imp False End SubMit logischen Operatoren kann man auch bitweise Vergleiche zwischen Zahlen durchführen. Diese Thematik führt über das VBA-Tutorial hinaus. Wer sich mit Binärarithmetik auskennt, dem dürfte das folgende Beispiel als Einstieg genügen:
Sub bitweise() Dim x As Byte x = 254 Debug.Print x And 15 End SubIn der Binärarithmetik werden Zahlen häufig hexadezimal, gelegentlich oktal geschrieben. Das ist auch in VBA möglich, indem man &H bzw. &O vor den entsprechenden Zahlenwert schreibt. Anstelle von 255 kann man also auch &HFF oder &O377 schreiben.