Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datum Uhrzeit per VBA zu "nur Datum"

Datum Uhrzeit per VBA zu "nur Datum"
05.09.2006 12:16:57
{mskro}
Hallo in die Runde,
ich beisse mir mal wieder die Zähne an etwas aus, wo bestimmt einer von euch eine Lösung parat hat.
Ich bekomme täglich eine *.cvs Datei geliefert, die unter anderem auch folgende Einträge hat:
02.09.2006 19:21:05
Nachdem ich diese Quelldaten mit "Text in Spalten" zu Excel geholt habe, ändere ich das Format über folgenden Weg:
"Bearbeiten", "Ersetzen", ersetze " **:**:**" durch ""
Wenn ich diesen Schritt allerdings über VBA laufen lasse, bekomme ich hinterher nicht das Format heraus um damit weiter arbeiten zu können.
Nun meine Frage: Wie kann ich per VBA das o.a. Format ändern, sodaß hinterher nur noch das Datum in der Zelle steht?
Gruss Manfred
PS: VBA Level = HobbyLevel (ging leider nicht anzugeben.)
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum Uhrzeit per VBA zu "nur Datum"
05.09.2006 12:24:25
mumpel
Hallo!
z.B. mit Format(Zelle, "DD.MM.YYYY"). Welchen Code verwendest Du? Ohne eine genaue Angabe ist eine gute Hilfe schwierig.
Gruss Rene
AW: Datum Uhrzeit per VBA zu "nur Datum"
05.09.2006 12:30:18
{mskro}
Hallo Rene,
ich verwende dafür folgenden Code:

Sub Makro1()
Cells.Select
Selection.Replace What:=" **:**:**", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
End Sub

Gruss Manfred
Anzeige
AW: Datum Uhrzeit per VBA zu "nur Datum"
05.09.2006 12:24:57
Uduuh
Hallo,
ich vermute mal, dass es sich nicht wirklich um ein Datum(=Zahl) sondern um Texte handelt. Somit Umwandlung mit
Datum=Datevalue(Left(Text,10))
Gruß aus’m Pott
Udo

AW: Datum Uhrzeit per VBA zu "nur Datum"
05.09.2006 12:45:42
{mskro}
Hallo Udo,
dabei bekomme ich die Meldung "Typen unverträglich".

Sub Makro1()
Cells.Select
Datum = DateValue(Left(Text, 10))
End Sub

Gruss Manfred
Anzeige
AW: Datum Uhrzeit per VBA zu "nur Datum"
05.09.2006 12:55:57
Uduuh
Hallo,
war doch nur ein Schema! Du musst der Variable 'Text' natürlich auch einen Wert zuweisen.
Gruß aus’m Pott
Udo

AW: Datum Uhrzeit per VBA zu "nur Datum"
05.09.2006 13:03:02
{mskro}
Hallo Udo,
ich bin wohl heute etwas Begriffsstutzig. Wie würde es im VBA denn aussehen müßen, wenn ich die Spalten "F", "G", "M", "N" und "O" so umwandeln möchte.
Gruss Manfred
Anzeige
AW: Datum Uhrzeit per VBA zu "nur Datum"
05.09.2006 12:46:07
{mskro}
Hallo Udo,
dabei bekomme ich die Meldung "Typen unverträglich".

Sub Makro1()
Cells.Select
Datum = DateValue(Left(Text, 10))
End Sub

Gruss Manfred
wer kann weiterhelfen?
05.09.2006 14:03:28
{mskro}
...ich schaffe es leider nicht alleine, die Hilfestellung von Udo ins VBA zu bringen, darum bitte ich um weitere Hilfe.
Die Spalten "F", "G", "M", "N" und "O" sollen so umwandelt werden, das aus dem Text ("TT.MM.JJJJ HH:MM:SS") ein Datum im Format ("TT.MM.JJJJ") wird.
Gruss Manfred
Anzeige
AW: wer kann weiterhelfen?
05.09.2006 14:32:30
IngGi
Hallo Manfred,
so vielleicht?

Sub Spalte()
Dim Bereich As Range
Set Bereich = Range("F:F")
Call Datum(Bereich)
Set Bereich = Range("G:G")
Datum
Set Bereich = Range("M:M")
Datum
Set Bereich = Range("N:N")
Datum
Set Bereich = Range("O:O")
Datum
End Sub


Sub Datum(Bereich As Range)
Dim rng As Range
For Each rng In Bereich
rng = DateValue(Left(rng, 10))
rng.NumberFormat = "DD.MM.YYYY"
Next 'rng
End Sub
Gruß Ingolf
Anzeige
AW: wer kann weiterhelfen?
05.09.2006 14:45:31
{mskro}
Hallo Ingolf,
dabei bekomme ich eine Fehlermeldung die lautet:
Argument ist nicht optional und der Curser bleibt auf "Datum" stehen.
Gruss Manfred
AW: wer kann weiterhelfen?
05.09.2006 14:50:43
mumpel
Ersetze "Datum" durch "Call Datum(Bereich)". Das sollte dann gehen.
Gruss Rene
AW: wer kann weiterhelfen?
05.09.2006 14:59:52
{mskro}
...klappt leider immer noch nicht. Makro läuft nun bis zum Punkt:
rng = DateValue(Left(rng, 10))
und gibt dann wieder die Meldung "Typen unverträglich" (vielleicht wegen der Überschrift?)
Gruss Manfred
Anzeige
AW: wer kann weiterhelfen?
05.09.2006 14:54:15
Rudi
Hallo,
für dein 'Hobby-Level' bist du reichlich hilflos.

Sub Spalte()
Dim Bereich As Range
Set Bereich = Range("F:G")
Call Datum(Bereich)
Set Bereich = Range("M:O")
Call Datum(Bereich)
End Sub

Gruß
Rudi
AW: wer kann weiterhelfen?
05.09.2006 15:05:25
{mskro}
Hallo Rudi,
wenn du bereits soviel herumexperimentiert hast wie ich, dann wärst du bestimmt auch schon verzweifelt und siehst vielleicht den Wald vor lauter Bäumen nicht mehr. Soviel zum Level.
Ich weiß auch gar nicht warum sich so viele Leute hier immer über die Angabe des Levels hermachen, aber egal.
Dein Tip läuft übrigens auch nicht und bleibt an der gleichen Stelle hängen.
Gruss Manfred
Anzeige
AW: wer kann weiterhelfen?
05.09.2006 14:40:38
mumpel
Hallo!
Damit sollte es gehen.

Sub Umwandeln()
On Error Resume Next
Selection.Replace What:=" **:**:**", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.NumberFormat = "m/d/yyyy"
End Sub

Gruss Rene
AW: wer kann weiterhelfen?
05.09.2006 14:52:56
{mskro}
Hallo Rene,
so wandelt Excel mir aber alle Zellen in das Format um, auch die Zellen, in der z.B. die Postleitzahl steht. Ich brauche das nur in den Spalten, wo das Datum als Text drin steht. Das sind momentan die Spalten "F", "G", "M", "N" und "O".
Gruss Manfred
Anzeige
AW: wer kann weiterhelfen?
05.09.2006 14:58:20
mumpel
So dürfte es gehen.

Sub Umwandeln()
On Error Resume Next
Dim bereich As Range
Set bereich = Range("F:G,M:O")
bereich.Select
Selection.Replace What:=" **:**:**", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.NumberFormat = "m/d/yyyy"
End Sub

Gruss Rene
Anzeige
Super Rene, das klappt jetzt
05.09.2006 15:10:03
{mskro}
Vielen Dank für die tatkräftige Unterstützung.
Gruss Manfred
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. 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
  1. Schließe den VBA-Editor.
  2. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige