Datumszellen in Excel mit VBA als Text formatieren
Schritt-für-Schritt-Anleitung
Um Datumszellen in Excel mithilfe von VBA als Text zu formatieren, kannst du den folgenden Code verwenden. Dieser Code konvertiert die serielle Zahl in ein Textformat, welches für deine weiteren Makros genutzt werden kann.
- Öffne Excel und drücke
ALT + F11, um den VBA-Editor zu öffnen.
- Klicke auf
Einfügen > Modul, um ein neues Modul zu erstellen.
- Füge den folgenden Code in das Modul ein:
Sub textdat()
Dim c As Range, _
Dt As String, _
zNr As Long, laR As Long
zNr = 5
laR = Cells(Rows.Count, 21).End(xlUp).Row ' Spalte U
If laR < zNr Then Exit Sub
Application.ScreenUpdating = False
For Each c In Range("U" & zNr & ":U" & laR)
With c
.NumberFormat = "m/d/yyyy"
Dt = .Text
.ClearContents
.NumberFormat = "@"
.Value = Dt
End With
Next c
Application.ScreenUpdating = True
End Sub
- Schließe den VBA-Editor und führe das Makro aus, indem du
ALT + F8 drückst und textdat auswählst.
Häufige Fehler und Lösungen
-
Laufzeitfehler '1004': Dieser Fehler tritt auf, wenn das NumberFormat nicht gesetzt werden kann. Achte darauf, dass du die richtige Formatierung verwendest. Verwende "m/d/yyyy" für die Datumsformatierung und "@" für Text.
-
Falsches Format: Wenn das Datum nicht korrekt als Text angezeigt wird, stelle sicher, dass du .ClearContents vor der Zuweisung des Textes verwendest, um die Zelle zu bereinigen.
Alternative Methoden
Eine andere Möglichkeit, Datumszellen als Text zu formatieren, ist die Verwendung der Format-Funktion in VBA:
Sub alternativeMethod()
Dim zNr As Long
zNr = 5
Do While Cells(zNr, 21) <> "" ' Spalte U
If Cells(zNr, 21) <> 0 Then
Cells(zNr, 21) = Format((Cells(zNr, 21)), "DD.MM.YYYY")
End If
zNr = zNr + 1
Loop
End Sub
Diese Methode formatiert die Zelle direkt und sollte ebenfalls als Text in der gewünschten Form angezeigt werden.
Praktische Beispiele
Hier ist ein Beispiel für die Anwendung des Codes. Wenn du beispielsweise die serielle Zahl 38849 in der Zelle U5 hast, wird sie nach der Ausführung des Makros als "12.05.2006" angezeigt, aber als Text gespeichert.
Ein weiteres Beispiel könnte sein, wenn du eine ganze Spalte in einem Import-Datenbereich hast, der regelmäßig aktualisiert wird. Der VBA-Code kann so angepasst werden, dass er die Spalte automatisch aktualisiert.
Tipps für Profis
- Nutze
Application.ScreenUpdating = False am Anfang des Makros, um die Ausführung zu beschleunigen und das Flackern des Bildschirms zu vermeiden.
- Du kannst den Code erweitern, um mehrere Spalten gleichzeitig zu formatieren, indem du weitere
For Each-Schleifen hinzufügst.
- Achte darauf, die richtigen Zellreferenzen und Formate für deine spezifischen Anforderungen zu verwenden.
FAQ: Häufige Fragen
1. Kann ich das Makro für mehrere Spalten gleichzeitig verwenden?
Ja, du kannst den Code so anpassen, dass er in einer Schleife mehrere Spalten abarbeitet.
2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen.
3. Was passiert, wenn ich die serielle Zahl nicht in ein Datum umwandeln kann?
Wenn das Datum nicht umgewandelt werden kann, bleibst du mit der ursprünglichen seriellen Zahl. Stelle sicher, dass die Zelle gültige Daten enthält.