VBA: Datum (Date) in String (Zeichenkette) umwandeln

VBA - Visual Basic for Application

Mittels VBA kann man im Bereich von Microsoft Office (Excel, Word, Access, etc.) sehr viele routinemäßige Aufgaben durch die Programmierung von Makros automatisieren, um sich das Leben etwas zu erleichtern. Dabei kann es erforderlich werden, dass man im Rahmen einer String-Ausgabe zum Beispiel per MassegeBox auch ein Datum, also eine Variable vom Datentyp Date, ausgeben möchte.

Laufzeitfehler Typen unverträglich

Versucht man eine direkte Verkettung von String und Date, dann erhält man beim Ausführen des Makros einen Laufzeitfehler ’13’ mit dem Hinweis “Typen unverträglich”.

Sub DateToString()
Dim myDate As Date
Dim myString As String
myString = "Mein großer Tag ist der "
'aktuelle Datum von heute zuweisen
myDate = Date
myString = myString + myDate
MsgBox (myString)
End Sub
Screenshot VBA-Editor Date und String verursacht Laufzeitfehler
Datentyp Date und String können nicht direkt miteinerander verkettet werden

Gefahr erkannt, Gefahr gebannt! Die Fehlermeldung kommt zurecht. Schließlich kann man in Datentyp-stringenten Programmiersprachen nicht einfach verschiedene Datentypen einandern zuweisen. Dass heißt man muss vorher den Datentyp Date in einen String konvertieren, genauso wie man im VBA auch Integer zu String umwandeln muss.

Konvertierung mit CStr()

Die Umwandlung nimmt man dazu mit der Funktion CStr(arg) vor. Als Argument übergibt man in diesem Fall die Datums-Variable, wobei CStr() eine überladene Funktion ist und auch Integer-Werte, Bool-Werte oder Double-Werte umwandeln kann.

Sub DateToString()
Dim myDate As Date
Dim myString As String
myString = "Mein großer Tag ist der "
'aktuelle Datum von heute zuweisen
myDate = Date
myString = myString + CStr(myDate)
MsgBox (myString)
End Sub
Screenshot VBA-Editor mit Ausgabe eines Datums in MessageBox
Datum in MessageBox ausgeben

Die Funktion CStr() ist auch einfach zu merken, indem man sich vorstellt, dass das “C” für Convert steht und “Str” für String. Somit kann man also ein Datum ganz schnell in eine Zeichenkette umwandeln, um das Datum zum Beispiel in einer MessageBox darzustellen.

Datumsausgabe formatieren: Umwandlung mit Format()-Funktion

Mit CStr() erfolgt die Ausgabe des Datums in dem Format, welches den Datumseinstellungen bzw. Länder-/Regionseinstellungen des Betriebssystem entspricht. Möchte man das Datum in einem anderen Format ausgeben, so kann man die Funktion Format(date, formatString) verwenden. Diese übergibt man zwei Argument.

  • date…das Datum vom Datentyp Date
  • formatString…ein String der beschreibt, wie das Datum zu formatieren ist

Die Funktion hat als Rückgabewert den Datentyp String.

Symbole für Datums-Formatierungen

Die nachfolgende Liste zeigt die möglichen Symbole, die man im Formatierungs-String verwenden kann:

  • yyyy……….100-9999 (drei oder vierstellige Jahresangabe)
  • yy…………..00-99 (Die letzten zwei Ziffern des Jahrs)
  • y…………….1-366 (Tag des Jahrs)
  • mmmm….vollständiger Monatsname
  • mmm…….abgekürzter Monatsname
  • mm……….01-12 (Monat des Jahrs, mit vorangestellter Null, beginnend mit Januar = 01)
  • m………….1-12 (Monat des Jahrs, ohne vorangestellte Null, beginnend mit Januar = 1)
  • ww………..1-53 (Woche des Jahrs, ohne vorangestellte Null; Woche 1 beginnt am 1. Januar)
  • w…………..1 bis 7 (Tag der Woche, beginnend mit Sonntag = 1)
  • dd…………01-31 (Tag des Monats, mit vorangestellter Null)
  • d…………..1-31 (Tag des Monats, ohne vorangestellte Null)

Code-Beispiel

Das folgende Code-Beispiel zeigt, wie man den Datentyp Date in einen formatierten String konvertiert, so dass man das Datumsformat individuell gestalten kann.

Sub DateToString()
Dim myDate As Date
Dim myString As String
myString = "Mein großer Tag ist der "
'aktuelle Datum von heute zuweisen
myDate = Date
myString = myString + Format(myDate, "yyyy-mmm-dd")
MsgBox (myString)
End Sub

 

Screenshot VBA-Editor Datum in String formatieren
individuelle Formatierung des Datumsformat
Bestseller Nr. 1
Bestseller Nr. 2

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert