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

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

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

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

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

Anzeige
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

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:-?
:-?

199 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige