498 Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)
Hallo,

ich habe in Zelle cells(n,3) im Zeitformat 14:00 stehen.
Trotzdem wird die Bedingung

[code]Do While CDate(Cells(n, 3)) >= CDate("14:00") And CDate(Cells(n, 3)) <= CDate("21:00")[/code]

nicht erfüllt.
Hat jemand einen Tipp?
Danke und Gruß Andreas

8 Antworten

0 Punkte
Beantwortet von
Hallo Andreas .-)

Du vergleichst einen 8 stelligen String mit einem 5 Stelligen!
*Das kann nur böse enden :-)*

Gruss Nighty
0 Punkte
Beantwortet von
Hallo Andres .-)

Wenn du die Variablen im Vbed kontrollierst,siehst du deine Problematik sehr gut!

Gruss Nighty

Falsch
 CDate("14:00")

Richtig
 CDate("14:00:00")

Gruss Nighty
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo nighty,

danke für deine Hilfe. Es klappt aber noch nicht. Im Überwachungsfenster habe ich Cdate("14:00") mit dem Zellinhalt cdate(cells(n,3)) verglichen - beide stimmen da in den Stellen und im Format überein: 14:00:00.
Gruß A.
0 Punkte
Beantwortet von
Hallo Andreas .-)

Zellen hh:mm formatiert

CDate(Cells(x, y)) >= CDate("14:00:00") And CDate(Cells(x, y)) <= CDate("21:00:00")

Gruss Nighty
0 Punkte
Beantwortet von
Hallo Andreas,

bist du dir denn sicher, dass der Ausdruck nicht korrekt ausgewertet wird? Bei mir funktioniert das sowohl mit Cdate() als auch mit Timevalue() wunderbar.

Prüfen kannst du das z.B. indem du ein msgbox davor schreibst
MsgBox CDate(Cells(n, 3)) >= CDate("14:00") And CDate(Cells(n, 3)) <= CDate("21:00")
Wenn diese WAHR zurückgibt, müsste korrekt in die Schleife reingesprungen werden.

Wie geht denn dein Code weiter? Vielleicht hast du dort eine falsche IF-Abfrage?
Am besten du setzt vor der Schleife einen Haltepunkt und springst dann mit F8 als Einzelzeile weiter. Dann findest du den Fehler eher.

Gruß Mr. K.
0 Punkte
Beantwortet von
sollte in der Zelle zusätzlich ein Datum stehen und du nur das Zeitformat des jeweiligen Tages auswerten wollen, dann probiers mal mit

CDate(Format(Cells(n, 3), "hh:mm")) >= CDate("14:00") And CDate(Format(Cells(n, 3), "hh:mm")) <= CDate("21:00")
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo,
danke erst einmal für eure Tipps! Ich habe alles durchprobiert so wie von euch vorgeschlagen - es hat einfach nicht funktioniert. Die Bedingung wurde einfach nicht korrekt ausgewertet.

Ich habe mit folgender Variante allerdings Erfolg gehabt:
[code]Do While CDbl(CDate(Cells(n, 3))) >= CDbl(CDate("14:00")) And CDbl(CDate(Cells(n, 3))) <= CDbl(CDate("21:00"))[/code]

Warum es ohne CDbl nicht funktioniert verstehe ich bis jetzt noch nicht, aber so klappt es erst einmal.
Vilen Dank und Gruß A.
0 Punkte
Beantwortet von
Hallo Andreas .-)

Dann schau dir mal die Umwandlunsfomate in der Vba hilfe an!

Zellenformat>Umwandlungsformat

Gruß Nighty
...