Wozu braucht die Zuweisung =, „“ oder #?

Zuweisungen dienen dazu, einen Wert oder einen Ausdruck z.B. in einer Variable zu speichern:

Let bytAlter = 23

Let curPreis = 39.95 * 1.19

Let datWeihnachten = #12/24/2016# 

Let datGebDatum = "30.06.1998"

Let strName = "Yilmaz"

Aber warum steht da etwas in Anführungszeichen, in Doppelkreuzen und mal ohne alles?

Wenn Sie in einem Programm einer Variable einen Wert zuweisen wollen, dann haben Sie bei mir gelernt, dass in VBA erst die Anweisung Let kommen muss. Anschließend folgt der Name der Variable. (Übrigens sagt man in der Inforamtik dazu nicht Name, sondern Bezeichner. Denn es gelten bestimmte Regeln, welche Bezeichner erlaubt sind und welche nicht.) Anschließend kommt ein Gleichheitszeichen. Dann kommt ein Wert oder ein Ausruck.

Das Problem mit dem Gleichzeitszeichen

Das Gleichheitszeichen hat mehrere Bedeutungen. Es kann zum Vergleichen benutzt werden, also um zu prüfen, ob zwei Werte gleich sind. Ein Beispiel:

If bytNote = 4 Then

Debug.Print "Das war knapp..."

End If

Es kann aber auch benutzt werden, um einen Wert zuzuweisen, wie oben in den Beispielen. Um in VBA besser unterscheiden zu können, ob das Gleichheitszeichen für einen Vergleich oder eine Zuweisung steht, verwenden wir in VBA immer Let!

Das Problem mit dem Ausdruck

Ich hatte oben geschrieben, dass eine Zuweisung einen Ausdruck oder einen Wert einer Variable zuweist. Mit Ausdruck meine ich eine Verbindung aus Werten, Rechenoperationen (und anderen Operatoren), Variablen, Funktionen usw. die sich nach einer Rechenregel ausrechnen lässt. (In Mahte hat man dazu Formel gesagt.) Ein Wert ist einfach ein Element aus einem Wertebereich oder einer Menge von Werten, also z.B. 42, Yilmaz oder True.

Das Problem mit den Seiten

Die Zuweisung hat zwei Seiten. Was steht links und was steht rechts vom Gleichheitszeichen? Es gilt immer, dass erst die rechte Seite ausgewertet wird (z.B. wird ein Ausdruck ausgerechnet) und dann der linken Seite zugewiesen wird. Wenn rechts ein Wert steht, dann muss er nicht ausgewertet werden und wird direkt zugewiesen.

Das Problem mit den Anführungszeichen und Doppelkreuzen

Ob man auf der rechten Seite einer Zuweisung den Wert in Anführungezeichen oder Doppelkreuzen oder ohne schreiben muss, hängt vom Typ des Wertes ab -also von seinem Datentyp. Es gilt:

Zahlen immer ohne Anführungszeichen, z.B.:

Let bytAlter = 23

Texte immer mit Anführungszeichen, z.B.:

Let strVorname = "Ali"
Let strName = "Yilmaz"

Datumsangabe macht der Profi mit Doppelkreuzen im amerikanischen Datumsformat mit Monat, Tag und Jahr (mm/dd/yyyy), z.B.:

Let datWeihnachten = #12/24/2016#

Bei Datumsangaben gehen auch Anführungszeichen mit dem deutschen Datumsformat, z.B.:

Let datGebDatum = "30.06.1998"

Nanu, wie kann das sein? Wenn Sie ein Datum in Anführungszeichen schreiben, dann steht es dort als Text. Weil aber die Variable auf der linken Seite keinen Text speichern kann (denn sie ist vom Typ Date, was wir am Präfix dat erkennen) muss der Text in ein Datum umgewandelt werden. Das passiert automatisch durch Auswertung des Ausdrucks auf der Linken Seite. Dabei findet eine implizite Typumwandlung statt – aber das führt hier zu weit. Ich erkläre es bei Bedarf in einem anderen Post.

Die Lösung: Was merken wir uns also?

1. Anführungszeichen bei Texten

2. Doppelkreuze beim Datum

3. Sonst nix. 

Schreibe einen Kommentar