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

Zelle mit Datum nicht als Datum erkannt

Forumthread: Zelle mit Datum nicht als Datum erkannt

Zelle mit Datum nicht als Datum erkannt
25.06.2013 16:10:01
tco99

Hallo zusammen,
wieder mal ein Problem mit einem Datum:
In einem Tabellenblatt verwalte ich Werkzeuge. Manche brauchen eine regelmäige Überprüfung (Kalibrierung). Ob sie zu prüfen sind, steht in der Spalte D. In Spalte E steht, wann die Kalibrierung ansteht. In Spalte F soll dann stehen, ob der Zeitpunkt erreicht, überschritten oder noch im grünen Bereich ist. Das mache ich mit Datedif. Das Datum kommt über eine Userform in die Spalte F. Das Datum wird also nicht direkt in die Zelle eingetragen und mit der Entertaste abgeschlossen. Dadurch kommt es dazu, dass das Datum nicht als Datum erkannt wird.
Meine Frage:
mit welchem Code kann ich die Spalte F nach unten durchlaufen und ein "Enter" für jede Zelle senden?
Was mir leider nicht hilft ist "CDate(TextBox.Value)", es muss so sein, dass die Spalte nachträglich durchlaufen wird. Ansonsten wird in der späteren Darstellung der Liste über eine Listbox die Daten mit z.B. 43254 angezeigt, und nicht mit z.B. 12.08.2012.
Wer kann mir weiterhelfen?
Ich sende eine Beispielmappe mit: https://www.herber.de/bbs/user/86043.xls
Vielen Dank
Erdogan

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ohne VBA : Daten - Text in Spalten - Getrennt
25.06.2013 16:56:49
NoNet
Hallo Erdogan,
mit der Selbsteinschätzung "Excel gut" vermute ich, dass Du den Textkonvertierungs-Assistenten kennst ?
Falls nicht - so geht es ohne VBA :
- Markiere die Spalte E
- Wähle im Menü "Daten -Text in Spalten - Getrennt - Fertigstellen"
Der Assistent analysiert nun die Daten und versucht diese in einem geeigneten Zahlenformat darzustellen - also auch "datumsgeeignete" Daten als Datum zu formatieren.
Voilá - das war's !
Au revoir, NoNet

Anzeige
BTW : Datedif()-Funktions-Parameter
25.06.2013 17:08:31
NoNet
Hallo Erogan,
kleiner Nachtrag, da mir das gerade auffiel :
Die DateDif()-Funktion benötigt die Datumsparameter in einer festgelegten Reihenfolge :
=DATEDIF(FrüheresDatum;SpäteresDatum,"D"), also z.B. =DATEDIF("01.06.2013";"15.06.2013";"D") (ergibt 14)
Bei falscher Reihenfolge (also z.B. =DATEDIF("15.06.2013";"01.06.2013";"D")) ergibt das - wie in einigen Zellen Deiner Tabelle - den Fehlerwert #ZAHL!
Wenn es sich lediglich um Tage handelt, kannst Du alternativ einfach diese Funktion (in F2) verwenden und nach unten kopieren :

=WENN(E2="";"Undefiniert";WENN(E2=HEUTE();"Läuft heute ab";WENN(E2<HEUTE();"Abgelaufen"; WENN(E2-HEUTE()<45;"Läuft bald ab";WENN(E2-HEUTE()>44;"Gültig";"Undefiniert")))))

Gruß, NoNet

Anzeige
AW: BTW : Datedif()-Funktions-Parameter
25.06.2013 17:48:51
tco99
Hi NoNet,
danke für die Hilfe.
Ich suche eine VBA-Lösung, da ich alles über Userformen steuern möchte.
Komisch finde ich, wenn man in die Zellen der Datumsspalte klickt und entert, wird richtig gerechnet.
Gruß
Erdogan

Verwende CDate() in VBA
25.06.2013 17:56:23
NoNet
Hallo Erdogan,
befüllst Du die Datumsfelder auch aus dem UserForm heraus ?
Dann verwendest Du vermutlich solch eine Anweisung (oder ähnlich) :
Cells(lngZeile,lngSpalte)=Textbox1

Dadurch wird der Inhalt der Textbox1 als TEXT in die Zelle geschrieben !
Besser wird es durch die Verwendung der CDate() Funktion (CDATE = "Convert to Date") :
Cells(lngZeile,lngSpalte)=CDate(Textbox1)
Gruß, NoNet

Anzeige
AW: Verwende CDate() in VBA
25.06.2013 22:07:01
tco99
Hi NoNet,
@Befüllung aus Userform heraus: das ist richtig. CDate() habe ich bereits verwendet, was auch einwandfrei funktioniert. Das Problem dabei ist aber, dass ich die Tabelle in eine Listbox lade, ein Datum darin aber nicht mit dem Format TT.MM.JJJJ, sondern als fünfstellige Zahl ausgegeben wird. Und für den User ist diese Zahl nichtssagend.
Gruß
Erdogan

Anzeige
Dann lade doch nicht .Value, sondern ...
26.06.2013 03:06:25
Luc:-?
.Text, Erdogan;
viell geht und hilft das.
Morrn, Luc :-?

AW: Dann lade doch nicht .Value, sondern ...
26.06.2013 11:00:04
tco99
Hi Luc,
ich fülle die Listbox mit "ListBox1.RowSource = Wks2 & "!A2:IV" & loletzte"
Ich verwende Value dabei nicht. Bei der Eingabe der Daten über die Userform verwende ich CDate(), damit ich mit den Daten weiterrechnen kann. Bei der Darstellung der Tabelle über die Listbox bräuchte ich aber die Ansicht TT.MM.JJJJ.
Hier der ganze Code:
Dim Wks As String
Dim Wks2 As String
Dim Programmfenster As Object
Wks = "Werkzeuge" 'Anpassen
Wks2 = "GefilterteDaten" 'Anpassen
Set Programmfenster = Werkzeuge 'Anpassen
'Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
'Ergebnisblatt vorbereiten
Sheets(Wks2).Cells.Delete Shift:=xlUp
Sheets(Wks2).Cells.NumberFormat = "General"
'Filterung durchführen
With Sheets(Wks).Range("A1:IV1")
.AutoFilter
If Programmfenster.Filter1.Text "" Then .AutoFilter Field:=2, Criteria1:=Programmfenster.Filter1.Text 'Anpassen
If Programmfenster.Filter2.Text "" Then .AutoFilter Field:=3, Criteria1:=Programmfenster.Filter2.Text 'Anpassen
If Programmfenster.Filter3.Text "" Then .AutoFilter Field:=8, Criteria1:=Programmfenster.Filter3.Text 'Anpassen
If Programmfenster.Filter4.Text "" Then .AutoFilter Field:=9, Criteria1:=Programmfenster.Filter4.Text 'Anpassen
If Programmfenster.Filter5.Text "" Then .AutoFilter Field:=14, Criteria1:=Programmfenster.Filter5.Text 'Anpassen
If Programmfenster.Filter6.Text "" Then .AutoFilter Field:=18, Criteria1:=Programmfenster.Filter6.Text 'Anpassen
If Programmfenster.Filter7.Text "" Then .AutoFilter Field:=22, Criteria1:=Programmfenster.Filter7.Text 'Anpassen
End With
'Gefilterte Ergebnisse übernehmen
Sheets(Wks).Range("A:IV").Copy
Sheets(Wks2).Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
'Zeilen und Spalten optimieren
Sheets(Wks2).Cells.EntireColumn.AutoFit
Sheets(Wks2).Cells.EntireRow.AutoFit
'AutoFilter abstellen
Sheets(Wks).Range("A1").AutoFilter
'Letzte Zeile bestimmen
Dim loletzte As Long
loletzte = Sheets(Wks2).Cells(Rows.Count, 1).End(xlUp).Row
'Ergebnisse und Anzahl der Einträge zeigen
If loletzte = 1 Then
Programmfenster.ListBox1.RowSource = ""
Else
Programmfenster.ListBox1.RowSource = Wks2 & "!A2:IV" & loletzte
End If
Programmfenster.AnzahlEinträge.Caption = "Anzahl Einträge: " & loletzte - 1
'Bildschirmaktualisierung einschalten
Application.ScreenUpdating = True
Gruß
Erdogan

Anzeige
Hier bezieht sich die ListBox direkt auf ...
26.06.2013 15:54:43
Luc:-?
…die Quelle, Erdogan,
was dann wahrscheinlich auch so sein muss und man da keine Formel angeben kann (weiß ich jetzt nicht, kannste mal testen).
Es muss/könnte aber noch eine Möglichkeit geben, die Daten zu lesen und direkt in die ListBox zu schreiben. Die ist mir aber zZ nicht ggwärtig, da das zu den reinen Verwaltungs- und Bereitstellungsfktionalitäten von Xl gehört, mit denen ich mich idR nur beschäftige, wenn ich sie selber benötige. ;-)
Ansonsten wird keine weitere Angabe zu den Daten wie zB .Value als .Value interpretiert, aber das scheint ja hier nicht opportun zu sein, da du RowSource direkt angibst. Also müsste bei dieser Variante das Datum als Text im QuellBereich stehen, was man mit der Fkt TEXT(dzahl;"datumsformat") erreichen kann. Das könnte aber in deiner Tabelle zu Problemen führen, die du dann durch Rückumwandlung (*1 dürfte reichen) umgehen müsstest…
Gruß Luc :-?

Anzeige
AW: Hier bezieht sich die ListBox direkt auf ...
26.06.2013 15:59:02
tco99
Hallo Luc,
danke für die umfängliche Antwort.
Ich muss mich erst mal mit dem hohen Informationsgehalt auseinandersetzen und kann dann erst etwas umsetzen. Bis dahin muss ich mein Feedback schuldig bleiben.
Aber wer mir schon mal geholfen hat, weiß, ich gebe immer Feedback! :-)
Vielen vielen Dank an alle Helfer, ich melde mich nochmal!
Erdogan

Anzeige
AW: Hier bezieht sich die ListBox direkt auf ...
30.06.2013 10:50:56
Hajo_Zi
warum Offen? Du willst doch was machen?

AW: Hier bezieht sich die ListBox direkt auf ...
01.07.2013 09:13:40
tco99
Hallo Hajo,
offen, weil ich noch mein Feeback schuldig bin.
Gruß
Erdogan

AW: Hier bezieht sich die ListBox direkt auf ...
01.07.2013 09:25:26
Hajo_Zi
Hallo Erdogan,
ein Beitrag wird als offen markiert da noch eine Lösung fehlt. Wegen einer Rückmeldung muss der Beitrag nicht als offen markiert werden.
Gruß Hajo

Anzeige
AW: Hier bezieht sich die ListBox direkt auf ...
01.07.2013 09:27:04
tco99
Mein Fehler.

AW: Hier bezieht sich die ListBox direkt auf ...
01.07.2013 09:20:41
tco99
Hallo zusammen,
ich habe mich dafür entschieden, diese Lösung zu nehmen: "die du dann durch Rückumwandlung (*1 dürfte reichen) umgehen müsstest…". Damit klappt es.
Danke für deine Lösung, Luc!
Viele Grüße
Erdogan

Bitte sehr, gern geschehen! ;-) Gruß owT
01.07.2013 20:17:20
Luc:-?
:-?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Zelle mit Datum nicht als Datum erkannt in Excel


Schritt-für-Schritt-Anleitung

Um das Problem zu lösen, dass ein Datum in Excel nicht erkannt wird, kannst du folgende Schritte ausführen:

  1. Markiere die betroffene Spalte.

    • Klicke auf den Buchstaben der Spalte, in der die Daten stehen, die nicht als Datum erkannt werden.
  2. Verwende den Textkonvertierungs-Assistenten.

    • Gehe zu Daten > Text in Spalten.
    • Wähle die Option Getrennt und klicke auf Fertigstellen. Dies hilft, die Daten in ein passendes Datumsformat zu konvertieren.
  3. VBA-Lösung für UserForm-Daten:

    • Wenn du Daten über eine UserForm eingibst, stelle sicher, dass du die CDate()-Funktion verwendest, um die Eingaben als Datum zu speichern:
      Cells(lngZeile, lngSpalte) = CDate(TextBox1.Value)
  4. Überprüfe das Datumsformat.

    • Stelle sicher, dass die Zellen das richtige Datumsformat haben. Du kannst das Format über Start > Zahlenformat einstellen.

Häufige Fehler und Lösungen

  • Problem: Datum wird in Excel nicht richtig angezeigt.

    • Lösung: Überprüfe das Zellenformat und wende den Textkonvertierungs-Assistenten an.
  • Problem: Excel erkennt das Datum nicht und zeigt es als Zahl an.

    • Lösung: Stelle sicher, dass du die CDate()-Funktion in VBA verwendest, um die Daten korrekt zu konvertieren.
  • Problem: Fehlerwert #ZAHL! bei der Verwendung der DATEDIF-Funktion.

    • Lösung: Achte auf die richtige Reihenfolge der Datumsparameter in der DATEDIF-Funktion:
      =DATEDIF("01.06.2013", "15.06.2013", "D")

Alternative Methoden

Falls der Textkonvertierungs-Assistent nicht funktioniert, kannst du auch folgende Methoden ausprobieren:

  • Manuelle Eingabe: Klicke in die Zelle und drücke Enter, um Excel zu zwingen, das Datum zu erkennen.

  • Formatierung über VBA: Du kannst eine Schleife verwenden, um jede Zelle in der Spalte zu durchlaufen und sicherzustellen, dass sie als Datum formatiert wird:

    Dim cell As Range
    For Each cell In Range("E:E")
    If IsDate(cell.Value) Then
        cell.Value = CDate(cell.Value)
    End If
    Next cell

Praktische Beispiele

  1. Beispiel für die DATEDIF-Funktion:

    • Um die Anzahl der Tage zwischen zwei Daten zu berechnen:
      =DATEDIF(A1, B1, "D")
  2. VBA zur automatischen Datumskonvertierung:

    • Wenn du ein Datum in eine ListBox laden möchtest, stelle sicher, dass du das Format konvertierst:
      ListBox1.AddItem Format(CDate(TextBox1.Value), "dd.mm.yyyy")

Tipps für Profis

  • Prüfe immer das Zellenformat, bevor du mit Daten arbeitest. Oft wird das Datum nicht erkannt, weil das falsche Format eingestellt ist.
  • Nutze die TEXT()-Funktion, um sicherzustellen, dass Datumswerte in einem lesbaren Format angezeigt werden:
    =TEXT(A1, "dd.mm.yyyy")
  • Wenn du regelmäßig mit Datumswerten arbeitest, gewöhne dir an, die CDate()-Funktion in deinen VBA-Skripten zu verwenden, um Probleme mit der Datumsdarstellung zu vermeiden.

FAQ: Häufige Fragen

1. Warum wird mein Datum in Excel nicht als Datum erkannt? Das kann passieren, wenn die Zelle als Text formatiert ist oder wenn das Datum nicht im richtigen Format eingegeben wurde.

2. Wie kann ich ein Datum in Excel manuell korrigieren? Klicke einfach in die Zelle und drücke Enter, um Excel zu zwingen, das Datum zu erkennen. Alternativ kannst du den Textkonvertierungs-Assistenten verwenden.

3. Was ist die DATEDIF-Funktion und wie verwende ich sie? Die DATEDIF-Funktion berechnet die Differenz zwischen zwei Datumswerten. Die Syntax ist:

=DATEDIF(FrüheresDatum, SpäteresDatum, "Einheit")

Die Einheit kann "D" für Tage, "M" für Monate oder "Y" für Jahre sein.

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