Datum und Uhrzeit per VBA in nur Datum umwandeln
Schritt-für-Schritt-Anleitung
Um in Excel mit VBA ein Datum, das auch eine Uhrzeit enthält, in nur das Datum umzuwandeln, kannst du die folgenden Schritte befolgen:
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Klicke auf
Einfügen
und wähle Modul
, um ein neues Modul zu erstellen.
- Füge den folgenden VBA-Code ein:
Sub Umwandeln()
Dim bereich As Range
Set bereich = Range("F:G,M:O") ' Definiere die Spalten, die bearbeitet werden sollen
bereich.Replace What:=" **:**:**", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
bereich.NumberFormat = "DD.MM.YYYY" ' Setze das Format für die Zellen
End Sub
- Schließe den VBA-Editor.
- Führe das Makro
Umwandeln
aus, um die Daten zu konvertieren.
Häufige Fehler und Lösungen
-
"Typen unverträglich": Dieser Fehler tritt häufig auf, wenn du versuchst, einen Text als Datum zu behandeln. Stelle sicher, dass die Zellen tatsächlich Text im Format "TT.MM.JJJJ HH:MM:SS" enthalten.
-
"Argument ist nicht optional": Achte darauf, dass du alle erforderlichen Parameter übergibst, z.B. bei der Verwendung von Call Datum(Bereich)
.
-
Formatierungsprobleme: Wenn das Datum nicht korrekt angezeigt wird, überprüfe, ob du das richtige Zahlenformat für die Zellen gesetzt hast. Nutze NumberFormat
entsprechend.
Alternative Methoden
Eine alternative Möglichkeit, um das Datum ohne Uhrzeit zu formatieren, ist die Verwendung der DateValue
-Funktion. Hier ein Beispiel:
Sub DatumUmwandeln()
Dim rng As Range
For Each rng In Range("F:G,M:O")
If IsDate(rng.Value) Then
rng.Value = DateValue(rng.Value) ' Wandelt den Text in ein Datum um
rng.NumberFormat = "DD.MM.YYYY" ' Setze das Format für die Zellen
End If
Next rng
End Sub
Diese Methode stellt sicher, dass nur gültige Datumswerte bearbeitet werden.
Praktische Beispiele
Angenommen, deine Daten in den Spalten "F" und "G" sehen so aus:
02.09.2006 19:21:05
03.09.2006 14:32:10
Nach der Ausführung des Makros wird das Ergebnis in den Zellen folgendermaßen aussehen:
02.09.2006
03.09.2006
Diese Umwandlung ist besonders nützlich, wenn du mit Daten arbeitest, die sowohl Datum als auch Uhrzeit enthalten, aber nur das Datum für Analysen und Berechnungen benötigst.
Tipps für Profis
- Verwende
On Error Resume Next
, um Fehler während der Ausführung des Codes zu ignorieren und sicherzustellen, dass das Makro nicht stoppt.
- Du kannst den Code erweitern, um auch andere Formate zu berücksichtigen, indem du bedingte Logik hinzufügst.
- Nutze die
VBA Now
-Funktion, um das aktuelle Datum und die Uhrzeit zu erhalten, wenn du mit neuen Daten arbeitest.
FAQ: Häufige Fragen
1. Wie kann ich nur die Uhrzeit aus einem Datum extrahieren?
Verwende die Funktion TimeValue
. Beispiel:
Sub UhrzeitHolen()
Dim zeit As Variant
zeit = TimeValue(Range("A1").Value) ' Extrahiert die Uhrzeit aus A1
End Sub
2. Was ist der Unterschied zwischen DateValue
und Now
in VBA?
DateValue
gibt nur das Datum zurück, während Now
sowohl das aktuelle Datum als auch die Uhrzeit zurückgibt.
3. Wie kann ich ein Datum ohne Uhrzeit in Access speichern?
In Access kannst du ein Datum im Format "TT.MM.JJJJ" speichern, indem du das Feld als Date/Time
definierst und das Uhrzeitformat ignorierst.
4. Warum wird meine Zelle nicht als Datum erkannt?
Stelle sicher, dass die Zellen als Text formatiert sind, bevor du die Umwandlung vornimmst. Excel kann manchmal Probleme haben, Datumswerte korrekt zu interpretieren.