Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1224to1228
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
DPPicker - Datum falsches Format
KLE
Hi,
in meiner USerform nutze ich für das Bestelldatum ein DPPicker-Element (Kalender).
Incl. Checkbox, damit es auch "leer" gelassen werden kann...
Wenn ich den Wert speichere daraus, schreibt es in die Tabelle nicht nur das Datum, sondern auch die aktuelle Zeit ?! Warum ?, wie kann ich es abstellen, denn beim wieder einlesen des Datensatzes, erhalte ich eine Fehlermeldung, dass das Element nicht den Wert lesen kann? (Obwohl es darus geschrieben wurde mit : .cells(LZeile, 15).value = DPPicker1.value )
Wer kann mir helfen und mir sagen, was ich hier berücksichtigen muss ?
Gruß und Danke!
Kay
Eigenschaften-Format? owT
19.08.2011 12:51:01
robert
1-dtpShortDate - owT
19.08.2011 13:03:12
KLE
AW: 1-dtpShortDate - owT
19.08.2011 13:19:47
robert
Hi,
ich habs bei mir getestet, Datum ist zB. 19.08.2011-also normal ;-)
Gruß
robert
Komisch - bei mir nicht, anbei Screens.
19.08.2011 15:04:19
KLE
Hi,
in einer Musterdatei klappt es fehlerfrei.
Doch bei mir ?
Hier 2 Screens von dem Editor...
Fehlermeldung
https://www.herber.de/bbs/user/76261.jpg
AnzeigeFormat...
https://www.herber.de/bbs/user/76262.jpg
komisch, dass es mit 00:00:00 aufgezeigt wird. Es ist doch "ein Datum" keine Uhrzeit ?!
Bin über jede Hilfe dankbar, da auch ein "löschen des DTPickers und neues einsetzen nicht geholfen hat.
Gruß und Danke!
Kay
Anzeige
AW: Komisch - bei mir nicht, anbei Screens.
19.08.2011 18:53:56
robert

in einer Musterdatei klappt es fehlerfrei.
Hi,
ja dann muss es an deinem Code liegen,oder sonstwo
in deiner Datei- aber die sehen wir nicht.
Beispieldatei hochladen ?
Gruß
robert
Mall "NULL" mal "00:00:00" - gleiche Prozedur
19.08.2011 23:44:21
KLE
n'Abend Robert,
...ich weiß es selbst nicht genau was mit der Datei los ist. "Hochladen" geht leider nicht, ca. 7000 Zeilen Programmcode drin und "interne" Daten. ;o( Aber ich habe etwas "rum-experimentiert".
Dabei ist mir folgendes aufgefallen, vielleicht kommen wir so dem "Mysterium" etwas näher.
Beobachtung:
Mit Hilfe der debug.print - Methode habe ich festgestellt, dass eben beim Start und dem ersten "Laden" der Daten das Element den Wert "00:00:00" besitzt und dann eben die Fehlermeldung verursacht, wenn es mit einem Datumswert belegt werden soll.
Jetzt habe ich einmal mit einem SpinButton nach dem ersten laden den Datensatz gewechselt (einen Dateneintrag weiter) und ... nun ist der Wert "NULL". und das ensprechende Datum wird korrekt angezeigt.
Ich habe nun gedacht, ich starte die Userform und setze dort zu Beginn folgende Zeile ein: TPicker1.value = Empty ...um beim starten der Form und Elemente, dem Picker den Wert NULL zuzuweisen...aber das klappte auch nicht wirklich.
Komisch eben, dass es nach, bzw. mit der Nutzung des SpinButtons geht ?! Dabei ruft das SpinButton die exakt gleiche Prozedur der Datenanzeige auf? Ich habe mal hier die EINZIGEN Code-Stellen wo es um das Picker-Element geht aufgeführt...vielleicht hilft das weiter?

' Userform initialize

...
' Datumsfeld vorbelegen
DTPicker1.value = Empty
...

Hier findet noch nicht das Dateneinlesen statt...es wird erst eine Listbox mit allen Datensätzen angezeigt und dort per Doppelklick wird mittels der Prozedur "dateneinlesen" der entsprechende Datensatz in der Userform eingelesen.


' Dateneingaben speichern

...
.Cells(LZeile, 9).Value = DTPicker1.Value
...

' Dateneinlesen

(Hier ist die einzige Stelle in der Datei, wo das Picker-Element ein Datumswert zugewiesen bekommt. Wie geschrieben, greift auch das Spin-Button darauf zurück!)

If .Cells(Zeile, 9).Value = "" Then
DTPicker1.Value = Empty
Else
DTPicker1.Value = .Cells(Zeile, 9).Value ' hier kommt die Fehlermeldung
End If
Vielleicht habt Ihr ja noch eine Idee, was ich machen könnte oder warum es mal geht und mal nicht?
Gruß
Kay
Anzeige
AW: Mall "NULL" mal "00:00:00" - gleiche Prozedur
20.08.2011 03:10:11
fcs
Hallo Kay,
evtl. steht das Datum als Text in den Zellen.

If IsDate(.cells(Zeile,9).Value then
DTPicker1.Value = cDate(.Cells(Zeile, 9).Value)
else
MsgBox "Wert in Zelle Cells(" & Zeile & ", 9)  ist kein Datumswert."
end if
Gruß
Franz
AW: IsDate = True, dennoch Fehler "00:00:00"
20.08.2011 16:25:32
KLE
Hallo Franz,
gute Idee, leider nein. IsDate wird mit True bestätigt und beim Wertzuweisen erscheint wieder die Fehlermeldung.
Das Datum wird beim speichern mit der Uhrzeit von Jetzt (Speicherzeit) erfasst. Obwohl ShortDate eingestellt. Kann es daran liegen und wenn ja, wie kann ich die Zeit "Nicht" speichern?
Gruß
Kay
Anzeige
AW: Ergänzung
20.08.2011 16:31:36
KLE
Wie gesagt, ist mir aufgefallen, dass beim "ersten" Mal laden der Form und einlesen eines Datumwertes, das Element mit "00:00:00" angezeigt wird und dann die Annahme eines Datums verweigert wird.
Sobald es einmal geladen wurde und ich den nächsten Datensatz einlese, zeigt mir das Element "NULL" an.
Wie kann ich gegebenenfalls dem Element bereits beim "Ersten" Laden die Eigenschaft "NULL" geben ?
Gruß und Danke !
Kay
AW: "00:00:00" erkannt, aber keine Ahnung...
20.08.2011 16:57:16
KLE
wie ich es sinnvoll lösen kann.
Bin jetz einmal alle Codezeilen einzeln abgegangen und habe festgestellt, dass das Element die "00:00:00" annimmt, in dem Moment, wo das Frame in der Userform - in der es sich befindet, mit Visible = False ausgeblendet wird.
Da ich jedoch einige (11) Frames übereinanderliegen habe und je nach Bedarf diese sichtbar gemacht werden - es bereits mehr wie 7.000 Codezeilen sind und ca. 50h Arbeit drinstecken, mag ich nur ungern das Tool komplett umbauen.
Frage: Wie kann ich ein Frame per VBA-Code nach oben holen? Denn wenn das andere "Drüber" liegt, wäre das mit dem Datumselement ja auch nicht sichtbar und ansteuerbar...oder ?
Gruß
Kay
Anzeige
AW: erste Lösungsansatz gefunden, wenn auch
20.08.2011 17:08:47
KLE
nicht der optimale...glaube ich.
Statt Frame.visible = False setze ich nun die .left Methode ein und verschiebe das Frame einfach aus dem Sichtbaren Bereich...(Left = 2000). und hole es entsprechend auch wieder zurück.
So bleibt es mit dem Datum auf "NULL" und alles scheint zu laufen.
Warum jedoch das Element auf "00:00:00" geht und dann nichts mehr annimmt ... wenn es einmal ausgeblendet und wird...scheint vermutlich ein "Mysterium" von Microsoft und Excel zu bleiben...oder ?!?
Über "optimalere" Methoden, oder Erklärungen, warum es passiert - wäre ich dankbar !!! ;o)))
Gruß und vielen Dank allen, die sich für mich Gedanken gemacht und mir Hilfe gegeben haben !
Ich steh in Eurer Schuld...
PS: wann ist das nächste Treffen, würde gern ein Kasten Bier o.ä. spendieren ;o)
Kay
Anzeige
AW: erste Lösungsansatz gefunden, wenn auch
20.08.2011 18:49:22
fcs
Hallo Kay,
ich kenne das DTPicker-Element nicht so genau mit seinen Eigenschaften.
Die Alternative zum Verschieben des Frames wäre wohl den Wert des DTPicker-Elements vor dem Ausblenden des Frames in einer modulweiten Variablen (Typ wohl Variant?) zu speichern und nach dem Einbleden jeweils wieder zuzuweisen.
Als ich dies
"Da ich jedoch einige (11) Frames übereinanderliegen habe und je nach Bedarf diese sichtbar gemacht werden..."
gelesen hab, da wurde mir doch etwas mulmig. Wahrscheinlich wäre es hier besser gewesen, ein Multipage-Element zu verwenden.
Gruß
Franz
Anzeige
AW: Danke für das Feedback...
kle2@gmx.de
...ja, Multipage. Aber da bin ich noch nicht so klar gekommen mit den Formatierungen, ButtonsFarben, etc.
Aber ich habe mir vorgenommen, mich damit näher zu beschäftigen...
Gruß und vielen Dank !
Kay

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige