Inhaltsverzeichnis

Operatoren

Allgemein

Ein Ausdruck ist ein Wert oder eine Gruppe von Werten, die durch Operatoren verknüpft sind. Die Auswertung eines Ausdruckes liefert ein einziges Ergebnis, das von einem bestimmten Datentyp ist.

Nachfolgend ein paar Beispiele für Ausdrücke:

Ausdruck Auswertung
10 Liefert die Zahl 10
"10" Liefert die Zeichenfolge 10
(5 - 2) * 3 Liefert die Zahl 9
5 = 6 Liefert den Wahrheitswert Falsch (False)
"Muster" & "mann" Liefert die Zeichenfolge Mustermann

Die folgenden Codebeispiele verwenden die Anweisung Debug.Print um in das Ausgabefenster zu schreiben. Blenden Sie das Ausgabefenster im VBA-Editor über den Menübefehl Ansicht - Direktfenster ein.

Zuweisungsoperator

Als Zuweisungsoperator wird das Ist-Gleich-Zeichen verwendet. Mit Hilfe des Zuweisungsoperators speichern Sie das Ergebnis eines Ausdrucks in einer Variablen oder legen den Funktionswert (Rückgabewert) einer Funktion fest.

Der Ausdruck auf der rechten Seite des Ist-Gleich-Zeichens wird ausgewertet und der Variablen bzw. der Funktionsbezeichnung auf der linken Seite des Ist-Gleich-Zeichens zugewiesen.

'Zuweisungsoperator
Dim eineVariable As Integer
eineVariable = 8
Debug.Print eineVariable
eineVariable = eineVariable + 3
Debug.Print eineVariable

Im Ausgabefenster sollten die Zahlen 8 und 11 ausgegeben werden.

Arithmetische Operatoren

Übersicht

Folgende arithmetische Operatoren stehen zur Verfügung:

Operator Syntax Beschreibung
+ z1 + z2 Addiert z1 und z2
- z1 - z2 Subtrahiert z2 und z1
- - z1 Unäres Minus
* z1 * z2 Multipliziert z1 und z2
/ z1 / z2 Dividiert z1 durch z2
\ z1 \ z2 Ganzzahlige Division von z1 durch z2
Mod z1 Mod z2 Ganzzahliger Rest der Division von z1 durch z2
^ z1 ^ z2 Potenz z1 hoch z2

Addition: +

Addiert zwei Werte. Bezüglich des Datentyps des Ergebnisses gelten folgende Aussagen:

  • Entspricht dem Datentyp des Operanden mit dem präzisesten Datentyp.
  • Präzisionsreihenfolge (von ungenau nach genau): Byte, Integer, Long, Single, Double, Currency.
  • Ist einer der Operanden ein Datumswert, ist das Ergebnis vom Datentyp Date.

Subtraktion: -

Zieht den rechten Operanden vom linken Operanden ab. Bezüglich des Datentyps des Ergebnisses gelten folgende Aussagen:

  • Entspricht dem Datentyp des Operanden mit dem präzisesten Datentyp.
  • Präzisionsreihenfolge (von ungenau nach genau): Byte, Integer, Long, Single, Double, Currency.
  • Ist einer der Operanden ein Datumswert, ist das Ergebnis vom Datentyp Date.
  • Ist mehr als einer der Operanden ein Datumswert, ist das Ergebnis vom Datentyp Double.

Unäres Minus: -

Das unäre Minus kann vor Variablen, Zahlen und Ausdrücken stehen und entspricht einer Multiplikation mit -1.

'Unäres Minus
Dim eineZahl As Integer
eineZahl = 8
Debug.Print eineZahl
Debug.Print - eineZahl

Im Ausgabefenster sollten die Zahlen 8 und -8 ausgegeben werden.

Multiplikation: *

Multipliziert zwei Werte. Bezüglich des Datentyps des Ergebnisses gelten folgende Aussagen:

  • Entspricht dem Datentyp des Operanden mit dem präzisesten Datentyp.
  • Präzisionsreihenfolge (von ungenau nach genau): Byte, Integer, Long, Single, Double, Currency.
  • Ist einer der Operanden ein Datumswert, ist das Ergebnis vom Datentyp Double.

Division: /

Dividiert den linken Operanden durch den rechten Operanden. Der Datentyp des Ergebnisses ist Double.

Ganzzahlige Division: \

Dividiert den linken Operanden durch den rechten Operanden, wobei die beiden Operanden zuvor mathematisch gerundet werden. Das Ergebnis der Division wird nicht mathematisch gerundet, sondern die Dezimalstellen werden abgeschnitten.

Der Datentyp des Ergebnisses ist Integer oder Long.

'Ganzzahlige Division
Debug.Print 10 \ 3
Debug.Print 15.2 \ 3.5

Im Ausgabefenster sollten die Zahlen 3 und 3 ausgegeben werden. Im zweiten Fall werden die Operanden auf 15 und 4 mathematisch gerundet und vom Ergebnis der Division die Dezimalstellen abgeschnitten.

Restwert: Mod

Liefert den ganzzahligen Restwert einer Division, wobei die Operanden zuvor mathematisch gerundet werden.

Der Datentyp des Ergebnisses ist Integer oder Long.

'Restwert
Debug.Print 10 Mod 3
Debug.Print 14.2 Mod 3.5

Im Ausgabefenster sollten die Zahlen 1 und 2 ausgegeben werden.

Der erste Ausdruck liest sich wie folgt: 10 durch 3 ergibt 3, Rest 1.

Im zweiten Fall werden die Operanden auf 14 und 4 mathematisch gerundet.

Potenz: ^

Nimmt den linken Operanden hoch dem rechten Operanden. Ist der rechte Operand eine Zahl kleiner 1 wird die entsprechende Wurzel gezogen.

Der Datentyp des Ergebnisses ist Double.

'Potenz
Debug.Print 4 ^ 2
Debug.Print 16 ^ 0.5

Im Ausgabefenster sollten die Zahlen 16 und 4 ausgegeben werden.

Vergleichsoperatoren

Übersicht

Vergleichsoperatoren vergleichen zwei Operanden und liefern als Ergebnis immer den Datentyp Boolean. Somit kann das Ergebnis eines Vergleichs entweder Wahr (True) oder Falsch (False) sein.

Folgende Vergleichsperatoren stehen zur Verfügung:

Operator Syntax Beschreibung
= a = b Wahr, wenn a gleich b
< a < b Wahr, wenn a kleiner b
<= a <= b Wahr, wenn a kleiner oder gleich b
> a > b Wahr, wenn a grösser b
>= a >= b Wahr, wenn a grösser oder gleich b
<> a <> b Wahr, wenn a ungleich b
Like a Like b Wahr, wenn Muster b in a enthalten ist; nur bei Datentypen String
Is a Is b Wahr, wenn a und b auf das gleiche Objekt verweisen; nur bei Datentypen Object

Vergleich von Zeichenketten

Es gibt zwei Möglichkeiten, Zeichenketten zu vergleichen: den Textvergleich und den binären Vergleich.

Beim Textvergleich werden die Buchstaben verglichen, wobei die Groß-/Kleinschreibung ignoriert wird. Um innerhalb eines Moduls diese Art des Vergleiches zu aktivieren, schreiben Sie am Beginn des Moduls die Anweisung Option Compare Text.

Beim binären Vergleich werden die Zahlencodes der einzelnen Buchstaben verglichen (a hat den Code 97, A den Code 65) und somit die Groß-/Kleinschreibung berücksichtigt. Dies entspricht der Standardeinstellung.

Mustervergleich bei Zeichenketten

Mit dem Operator Like können Mustervergleiche durchgeführt werden. Folgende Platzhalter stehen zur Verfügung:

Platzhalter Beschreibung
* Steht für kein oder beliebig viele Zeichen
? Steht für genau ein beliebiges Zeichen
[Liste] Liste von Zeichen, die an dieser Stelle stehen können
[!Liste] Liste von Zeichen, die nicht an dieser Stelle stehen können

Nachfolgend ein paar Beispiele, wobei das Ergebnis als Kommentar in jeder Zeile angegeben ist:

'Mustervergleich mit Like
Debug.Print "Erwin" Like "E*n" 'Wahr
Debug.Print "Erwin" Like "Er?in" 'Wahr
Debug.Print "Erwin Maier" Like "Er?in" 'Falsch
Debug.Print "Erwin Maier" Like "Er?in*" 'Wahr
Debug.Print "Erwin" Like "E[d,r]win" 'Wahr
Debug.Print "Erwin" Like "E[a-d]win" 'Falsch
Debug.Print "Erwin" Like "E[!r]win" 'Falsch

Reihenfolge der Auswertung

Alle Vergleichsoperatoren sind gleichwertig, d. h. die Auswertung erfolgt von links nach rechts.

Arithmetische Operatoren werden vor den Vergleichsoperatoren ausgewertet, wobei die Lesbarkeit durch Setzen von Klammern erhöht. wird.

'Reihenfolge der Auswertung
Debug.Print 5 * 3 <= 2 * 8 'Wahr
Debug.Print (5 * 3) <= (2 * 8) 'Wahr

In beiden Fällen werden im Endeffekt die Zahlen 15 und 16 verglichen.

Logische Operatoren

übersicht

Logische Operatoren werden verwendet, um Wahrheitswerte (z. B. Ergebnisse von Vergleichen) miteinander zu verknüpfen.

Folgende Operatoren stehen zur Verfügung:

Operator Syntax Beschreibung
And a And b Wahr, wenn a und b Wahr sind, sonst Falsch.
Or a Or b Wahr, wenn a oder b Wahr sind, sonst Falsch.
Not Not a Negation. Wahr, wenn a Falsch ist, Falsch, wenn a Wahr ist.
Xor a Xor b Wahr, wenn entweder a oder b Wahr ist, sonst Falsch.

Das Ergebnis einer logischen Verknüpfung lässt sich sehr schön in Wahrheitstabellen darstellen.

Wahrheitstabelle: And

Operand1 Operand2 Ergebnis
Wahr Wahr Wahr
Wahr Falsch Falsch
Falsch Wahr Falsch
Falsch Falsch Falsch

Wahrheitstabelle: Or

Operand1 Operand2 Ergebnis
Wahr Wahr Wahr
Wahr Falsch Wahr
Falsch Wahr Wahr
Falsch Falsch Falsch

Wahrheitstabelle: Not

Operand Ergebnis
Wahr Falsch
Falsch Wahr

Wahrheitstabelle: Xor

Operand1 Operand2 Ergebnis
Wahr Wahr Falsch
Wahr Falsch Wahr
Falsch Wahr Wahr
Falsch Falsch Falsch

Zeichenverkettungsoperator

Die Verkettung von Zeichenketten wird auch als Konkatenierung bezeichnet.

Sie können zwei Zeichenketten mit dem Additionsoperator + verketten. Dies kann zu Problemen führen, wenn die Operanden als Zahlen interpretiert werden können

'Keine gute Lösung
Debug.Print "5" + 1 '6

Da die Zeichenkette "5" auch als Zahl 5 interpretiert werden kann, wird hier einen Addition durchgeführt.

Verwenden Sie besser den Operator &, der alle Operanden als Zeichenketten betrachtet.

'Zeichenverkettung: gute Lösung
Debug.Print 5 & 1 '51
Debug.Print "Mustermann" & 1 'Mustermann1
Debug.Print "Muster" & "mann" 'Mustermann

Im Ausgabefenster sollten folgende Ausgaben stehen: 51, Mustermann1 und Mustermann.

Download Codebeispiele

Die gezeigten Codebeispiele können Sie als xlsm-Datei herunterladen.

Seitenanfang   Inhaltsverzeichnis