Formular: Formate von Listfeldern verändern sich

Hallo,

ich habe ein Erfassungsformular in Excel erstellt, in welchem Dropdown-Listfelder sind, welche ihre Items aus Zellbereichen beziehen und den gewählten Inhalt in andere Zellen schreiben.
In der Liste erscheinen korrekt die Datumsfelder, aber wenn ich ein Datum auswähle und das Listenfeld wieder „zusammenklappt“ ist statt dem Datum nur die äquivalente Zahl zu sehen (37622 statt 01.01.2003), welche auch gespeichert wird. Man kann also nicht mehr erkennen, welches Datum eigentlich gewählt war (analog Zeitangaben in Stunden).
was soll ich tun?

Gruß
Christoph

hi,

ich habe ein Erfassungsformular in Excel erstellt, in welchem
Dropdown-Listfelder sind, welche ihre Items aus Zellbereichen
beziehen und den gewählten Inhalt in andere Zellen schreiben.
In der Liste erscheinen korrekt die Datumsfelder, aber wenn
ich ein Datum auswähle und das Listenfeld wieder
„zusammenklappt“ ist statt dem Datum nur die äquivalente Zahl
zu sehen (37622 statt 01.01.2003), welche auch gespeichert
wird. Man kann also nicht mehr erkennen, welches Datum
eigentlich gewählt war (analog Zeitangaben in Stunden).
was soll ich tun?

die zelle(n) amit datumsformat formatieren. datumsangaben werden immer als zahlen abgespeichert; die anzeige als datum ist eine reine sache der formatierung.

hth
m.

Das hatte ich schon probiert. nützt aber nix. Wie gesagt, im Steuerelement erscheint die Liste der Datumswerte, aber wehe ich klicke ein Datum an, dann wird die Zahl gesetzt. Bei den Eigenschaften des Steuerelementes habe ich keine Formateigenschaft gefunden. Hilfe!

Christoph

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Christoph,

ich habe ein Erfassungsformular in Excel erstellt, in welchem
Dropdown-Listfelder sind, welche ihre Items aus Zellbereichen
beziehen und den gewählten Inhalt in andere Zellen schreiben.
In der Liste erscheinen korrekt die Datumsfelder, aber wenn
ich ein Datum auswähle und das Listenfeld wieder
„zusammenklappt“ ist statt dem Datum nur die äquivalente Zahl
zu sehen (37622 statt 01.01.2003), welche auch gespeichert
wird. Man kann also nicht mehr erkennen, welches Datum
eigentlich gewählt war (analog Zeitangaben in Stunden).
was soll ich tun?

Die Verarbeitung von Datumsangaben in dem Steuerungselement Kombinationsfeld scheint ein echtes Problem zu sein.
Ich hab mal ein wenig herumexperimentiert. Leider mit dem von dir festgestellten Ergebnis. Nicht nur dass das Datum in die äquvalente Zahl umgerechnet wird, das Ergebnis der Box wird auch noch als Text (String) zurückgegeben. Für die Darstellung des Datums im Formular hab ich keine einfache Lösung gefunden.

Bei der Auswertung der Formulareingaben und die Ausgabe der Daten in Zellen muß der im Kombinationsfeld gewählte Wert in eine Zahl umgewandelt werden, dann stehen in Zellen auch korrekte Datumsangaben.

Am besten integrierst du in den Code zum OK-Button, der das Formular schließt, noch folgenden Code um die Daten in die Zellen einzutragen:

Private Sub CommandButton1\_Click()
 Range("B10").Value = Val(ComboBox1.Value)
 UserForm1.Hide
End Sub

Hast du im Formular unter Eigenschaften für das Kombinationfeld unter ‚ControlSource‘ eine verlinkte Zelle eingetragen, in die das ausgewählte Datum eingetragen werden soll, dann sorgt folgender Code für einen korrrekten Eintrag in der Zelle:

Private Sub ComboBox1\_Change()
 Range(ComboBox1.ControlSource).Value = Val(ComboBox1.Value)
End Sub

In diesem Fall wird im Formular auch das ausgewählte Datum angezeigt.

Als letzte Möglichkeit bliebe noch in den Zellbereichen aus denen die Items die Datumswerte übernehmen, das Datum als Text einzugeben. Das geht zur Not auch mit der Funktion =Text(A1;„TT.MM.JJJJ“), wobei in A1 usw. normale Datumsangaben stehen. Dann werden die ausgewählten Werte auch korrekt angezeigt. Hat dann jedoch in den Ausgabezellen das Datum auch als Text stehen. Will man so ein Datum in Excel weiterverarbeiten, dann muß man die Funktion DATWERT benutzen, um den Datumstext (z.B. 01.02.2005) in die äquivalente zahl umzuwandeln.

Hat man ein einzelnes Kombinationsfeld mit Datumsauswahl in einer Tabelle wandelt folgender Code den Wert in der verlinkten Zelle in eine Zahl um.

Private Sub ComboBox1\_Change()
 Range(ComboBox1.LinkedCell).Value = Val(Range(ComboBox1.LinkedCell).Value)
End Sub

Hoffe das hilft etwas weiter
Franz

Franz

Hallo Franz,

Du hast ja alles versucht, find ich klasse. Vielen Dank für die Workarounds!
Gruß
Christoph