beraten
programmieren
implementieren
trainieren
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.