wie kann ich in VBA ein STRING in DATE Format umwandeln?
zum Beispiel: "7 Juni 2007" in normales Datum 07.06.2007.
Ich freue mich über jede Hilfe!
Danke!
Anja
Sub anja()
Const STRDAT As String = "7 Juni 2007"
Dim strAsDate As Date
strAsDate = DateValue(STRDAT)
MsgBox strAsDate
End Sub
Grüße Boris
| A | B | C | |
| 2 | 10.11.2007 | 10.11.2007 | |
| 3 | 12.12.2007 | ||
| 4 | 21.12.2007 |
| Formeln der Tabelle | ||||
|
Option Explicit
Public Sub Text_Datum()
Dim rngZelle As Range
For Each rngZelle In Selection.Cells
With rngZelle
If IsNumeric(.Text) Then
.Value = CDate(.Text)
End If
End With
Next rngZelle
End Sub
Servus
Um einen String in ein Date-Format in Excel VBA umzuwandeln, kannst Du die Funktion CDate oder DateValue verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
Öffne den VBA-Editor: Drücke ALT + F11.
Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject" und wähle "Einfügen" > "Modul".
Gib den folgenden Code ein:
Option Explicit
Sub StringInDatumUmwandeln()
Dim strDatum As String
Dim convertedDate As Date
strDatum = "7 Juni 2007" ' Der String, den Du umwandeln möchtest
convertedDate = DateValue(strDatum) ' Umwandlung
MsgBox "Das umgewandelte Datum ist: " & Format(convertedDate, "dd.mm.yyyy")
End Sub
Führe das Makro aus: Drücke F5, um das Makro auszuführen und das umgewandelte Datum anzuzeigen.
Problem: Das Datum wird nicht korrekt umgewandelt.
Problem: CDate funktioniert nicht wie erwartet.
Neben der Verwendung von CDate und DateValue kannst Du auch andere Ansätze ausprobieren:
Direkte Umwandlung in Excel: Wenn Du einen String in einer Zelle hast, kannst Du in einer anderen Zelle einfach =A1*1 verwenden, um den Text in ein Datum zu konvertieren, wobei A1 die Zelle mit dem String ist.
Verwendung von VBA zur Formatierung: Wenn Du das Datum in einem bestimmten Format benötigst, kannst Du die Funktion Format verwenden, um das Datum anzuzeigen:
MsgBox Format(convertedDate, "dd.mm.yyyy")
Hier sind einige praktische Beispiele für die Umwandlung von Strings in Datumsformate in VBA:
Beispiel für die Umwandlung eines Strings:
Dim strDatum As String
strDatum = "15 August 2021"
MsgBox CDate(strDatum) ' Gibt 15.08.2021 aus
Beispiel für die Umwandlung mehrerer Zellen:
Sub MehrereDatumsUmwandlungen()
Dim rngZelle As Range
For Each rngZelle In Selection.Cells
If IsNumeric(rngZelle.Value) Then
rngZelle.Value = CDate(rngZelle.Value)
End If
Next rngZelle
End Sub
Fehlerbehandlung: Füge Fehlerbehandlungslogik hinzu, um sicherzustellen, dass Dein Code robust ist. Verwende On Error Resume Next, um Laufzeitfehler zu ignorieren.
Datumsformate anpassen: Nutze Format in VBA, um das Datum nach Deinen Bedürfnissen zu formatieren, z. B. Format(Date, "dd-mm-yyyy").
Kommentare: Kommentiere Deinen Code, um die Verständlichkeit zu erhöhen, insbesondere wenn Du komplexe Umwandlungen durchführst.
1. Wie kann ich ein Datum wieder in einen String umwandeln?
Du kannst die Funktion Format verwenden, um ein Datum in einen String zu formatieren, z. B.:
Dim myDate As Date
myDate = Date
MsgBox Format(myDate, "dd.mm.yyyy") ' Gibt das Datum als String aus
2. Funktioniert das auch mit anderen Datumsformaten?
Ja, Du kannst CDate oder DateValue mit verschiedenen Datumsformaten verwenden, solange der String ein gültiges Datum darstellt. Achte darauf, dass das Format mit den regionalen Einstellungen Deines Excel übereinstimmt.