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

ComboBox soll Datum im richtigen Format zeigen

Forumthread: ComboBox soll Datum im richtigen Format zeigen

ComboBox soll Datum im richtigen Format zeigen
16.12.2004 22:26:59
Michael
Liebe Excel Kollegen,
das Datum ist anscheinend immer ein Problem mit Windows. Zur Zeit entwickle ich ein USERFROM, in welchem ComboBoxen auf Tabellen mit Datumsfeldern zurückgreifen sollen. Wenn ich den DropDown öffne (anklicke), dann werden mir auch Datumsformate aus der Tabelle gezeigt. Wenn ich aber eines davon auswähle, wird das Datum als Zahl gezeigt. Wie kann ich die ComboBox (oder was auch immer) so einstellen, dass ich auch nach Auswahl das Datum als Datum gezeigt bekomme?
Vielen Dank.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox soll Datum im richtigen Format zeigen
Beni
Hallo Michael,
mit CDate(ComboBox) erzwingst Du ein Datumsformat.
Gruss Beni
AW: ComboBox soll Datum im richtigen Format zeigen
16.12.2004 23:11:47
Michael
Hallo Beni und alle anderen,
wie genau mache ich das dann mit CDate? Die VBA Hilfe im Excel gibt mir da leider keine brauchbaren Infos.
Kann ich das vor Start der Forms definieren? Oder muss ich etwas in den Eigenschaften der ComboBox verändern?
Gruß
Michael
Anzeige
AW: ComboBox soll Datum im richtigen Format zeigen
Beni
Hallo Michael,
leider kenne ich Dein Code nicht, aber hier ein Beispiel.
Gruss Beni

Private Sub ComboBox1_Change()
Cells(1, 5) = CDate(ComboBox1)
End Sub

AW: ComboBox soll Datum im richtigen Format zeigen
Ramses
Hallo
"... Die VBA Hilfe im Excel gibt mir da leider keine brauchbaren Info..."
Glaube ich,... wenn man nicht nachkuckt ;-)))
---------------------------
Der Funktionsname legt den Rückgabetyp wie folgt fest:
Funktion Rückgabetyp Bereich des Arguments Ausdruck
CBool Boolean Eine gültige Zeichenfolge oder ein gültiger numerischer Ausdruck.
CByte Byte 0 bis 255.
CCur Currency -922.337.203.685.477,5808 bis 922.337.203.685.477,5807.
CDate Date Ein beliebiger gültiger Datumsausdruck.
CDbl Double -1,79769313486231E308 bis
-4,94065645841247E-324 für negative Werte; 4,94065645841247E-324 bis 1,79769313486232E308 für positive Werte.
CDec Decimal +/-79.228.162.514.264.337.593.543.950.335 für skalierte Ganzzahlen, d.h. Zahlen ohne Dezimalstellen. Für Zahlen mit 28 Dezimalstellen gilt der Bereich
+/-7,9228162514264337593543950335. Die kleinste mögliche Zahl ungleich Null ist 0,0000000000000000000000000001.
CInt Integer -32.768 bis 32.767; Nachkommastellen werden gerundet.
CLng Long -2.147.483.648 bis 2.147.483.647; Nachkommastellen werden gerundet.
CSng Single -3,402823E38 bis -1,401298E-45 für negative Werte; 1,401298E-45 bis 3,402823E38 für positive Werte.
Cvar Variant Numerische Werte im Bereich des Typs Double. Nichtnumerische Werte im Bereich des Typs String.
CStr String Rückgabe für CStr hängt vom Argument Ausdruck ab.
Bemerkungen
Wenn das an die Funktion weitergegebene Argument Ausdruck außerhalb des Bereichs des Datentyps liegt, in den es umgewandelt werden soll, tritt eine Fehler auf.
Sie können Ihren Code mit Hilfe der Funktionen zum Umwandeln von Datentypen dokumentieren, um anzuzeigen, daß das Ergebnis einer Operation einen bestimmten, vom Standarddatentyp abweichenden Datentyp haben soll. Mit CCur können Sie zum Beispiel Berechnungen explizit im Währungsformat durchführen, die normalerweise ganzzahlige Werte oder Werte einfacher bzw. doppelter Genauigkeit verwenden würden. Die CCur-Funktion stellt eine Alternative zu Val dar, die international gültige Umwandlungen eines beliebigen Datentyps in einen anderen ermöglicht. So werden zum Beispiel durch die Verwendung von Ccur verschiedene, vom Gebietsschema des Computers abhängige Dezimalzeichen ebenso erkannt wie unterschiedliche Tausendertrennzeichen und Währungseinstellungen.
Wenn die Nachkommastelle genau 0,5 beträgt, wird der Wert mit CInt und CLng immer bis zur nächsten geraden Ganzzahl gerundet. So wird beispielsweise 0,5 zu 0 abgerundet und 1,5 zu 2 aufgerundet. CInt und CLng unterscheiden sich von der Fix- und auch der Int-Funktion, die die Nachkommastellen einer Zahl nicht runden, sondern sie verkürzen. Außerdem entspricht der Rückgabetyp von Fix und Int immer dem Typ des an sie übergebenen Wertes.
Mit der IsDate-Funktion können Sie bestimmen, ob Datum in ein Datum oder eine Uhrzeit umgewandelt werden kann. CDate erkennt sowohl Datumsliterale und Zeitliterale als auch bestimmte Zahlen, die im zulässigen Bereich für ein Datum liegen. Beim Umwandeln einer Zahl in ein Datumsformat wird der ganzzahlige Teil für das Datum verwendet. Nachkommastellen der Zahl werden in eine Zeitangabe (beginnend bei 0:00) umgewandelt.
CDate erkennt alle Datumsformate, die im Gebietsschema des Systems ausgewählt werden können. Die richtige Reihenfolge von Tag, Monat und Jahr kann nicht immer bestimmt werden, wenn sich das Datumsformat von den im Gebietsschema verfügbaren Formaten unterscheidet. Außerdem wird ein langes Datumsformat nicht erkannt, wenn es auch eine Zeichenfolge für den Wochentag enthält.

Die CVDate-Funktion ist ebenfalls aus Gründen der Kompatibilität zu früheren Visual Basic-Versionen verfügbar. Die Syntax der CVDate-Funktion entspricht genau der Syntax der CDate-Funktion. Der einzige Unterschied besteht darin, daß CVDate nicht den Datentyp Date liefert, sondern den Datentyp Variant mit dem Untertyp Date. Aufgrund des integrierten Datentyps Date wird CVDate nicht mehr benötigt. Dasselbe Ergebnis können Sie auch erreichen, indem Sie einen Ausdruck in den Datentyp Date umwandeln und ihn dann einer Variablen vom Typ Variant zuweisen. Mit demselben Verfahren können auch alle anderen integrierten Datentypen in die entsprechenden Untertypen des Datentyps Variant umgewandelt werden.
Anmerkung Die CDec-Funktion gibt keinen diskreten Datentyp zurück; statt dessen wird immer ein Variant zurückgegeben, dessen Wert in einen Dezimal-Untertyp umgewandelt wird.
---------------
Was brauchst du mehr :-)
Gruss Rainer
Anzeige
AW: ComboBox soll Datum im richtigen Format zeigen
16.12.2004 23:29:37
Michael
Kurz Ergänzung noch.
In einer Prozedur vor dem Start des USERFORM definiere ich die die RowSources:
F6.CLASS2.RowSource = "=TOBEBILLED!C2:C" & c2
F6.DATE2.RowSource = "=TOBEBILLED!A2:A" & c2
F6.LFN.RowSource = "=TOBEBILLED!B2:B" & c2
F6.CLASSID2.RowSource = "=TOBEBILLED!D2:D" & c2
F6.CUSTOMERID2.RowSource = "=TOBEBILLED!E2:E" & c2
F6.CUSTOMER2.RowSource = "=TOBEBILLED!F2:F" & c2
F6.CITY3.RowSource = "=TOBEBILLED!G2:G" & c2
F6.NOL3.RowSource = "=TOBEBILLED!H2:H" & c2
F6.EURO2.RowSource = "=TOBEBILLED!I2:I" & c2
F6.MILES2.RowSource = "=TOBEBILLED!N2:N" & c2
F6.MILEE2.RowSource = "=TOBEBILLED!O2:O" & c2
Im Form wird aus der ComboBox DATE2 der ListIndex zugewiesen:
o = F6.DATE2.ListIndex
F6.CLASS2.ListIndex = o
F6.LFN.ListIndex = o
F6.CLASSID2.ListIndex = o
F6.CUSTOMERID2.ListIndex = o
F6.CUSTOMER2.ListIndex = o
F6.CITY3.ListIndex = o
F6.NOL3.ListIndex = o
F6.EURO2.ListIndex = o
F6.MILES2.ListIndex = o
F6.MILEE2.ListIndex = o
All das funktioniert wie gewohnt einwandfrei. Nur dieses verflixte Datum wird lediglich im DropDownDialog angezeigt. Wenn ich es auswähle, dann zeigt es mir eine Zahl wie z.B. 34578. Was muss ich tun (und wo im Code), um die Datumsanzeige zu erzwingen?
Gruß
Michael
Anzeige
AW: ComboBox soll Datum im richtigen Format zeigen
Heiko
Moin Michael,
versuche es mal so.

Private Sub ComboBox1_Change()
ComboBox1.Value = CDate(ComboBox1.Value)
End Sub

Gruß Heiko
PS: Das Forum lebt auch von den Rückmeldungen der Frager!
;
Anzeige

Infobox / Tutorial

ComboBox für Datumsformate in Excel optimieren


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass die ComboBox in Excel das Datum im richtigen Format anzeigt, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Finde die UserForm: Doppelklicke auf die UserForm, die die ComboBox enthält.

  3. Füge den Code zur ComboBox hinzu: Im Code-Bereich der ComboBox (z.B. ComboBox1) füge den folgenden Code ein:

    Private Sub ComboBox1_Change()
        ComboBox1.Value = CDate(ComboBox1.Value)
    End Sub
  4. RowSource definieren: Stelle sicher, dass die RowSource der ComboBox korrekt auf die Datumsdaten verweist. Beispiel:

    F6.DATE2.RowSource = "=TOBEBILLED!A2:A" & c2
  5. Teste die UserForm: Starte die UserForm und wähle ein Datum aus der ComboBox aus. Das Datum sollte jetzt im richtigen Format angezeigt werden.


Häufige Fehler und Lösungen

  • Datum wird als Zahl angezeigt: Dies geschieht häufig, wenn das Datum nicht korrekt umgewandelt wird. Stelle sicher, dass du CDate in der Change-Ereignisprozedur verwendest.

  • ComboBox zeigt leere Werte: Überprüfe, ob die RowSource korrekt gesetzt ist und die Daten in der angegebenen Range vorhanden sind.

  • VBA-Hilfe ist unklar: Wenn du Schwierigkeiten hast, die VBA-Dokumentation zu verstehen, suche nach spezifischen Beispielen oder frage im Forum nach weiteren Erklärungen.


Alternative Methoden

Wenn du keine ComboBox verwenden möchtest, kannst du auch andere Steuerelemente in deiner UserForm verwenden:

  • ListBox: Eine ListBox könnte auch eine geeignete Alternative sein, um mehrere Datumswerte anzuzeigen und auszuwählen.

  • Kalendersteuerelement: In einigen Excel-Versionen steht ein Kalendersteuerelement zur Verfügung, das die Datumauswahl erleichtert.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um die Funktionsweise zu verdeutlichen. Angenommen, du hast eine UserForm mit einer ComboBox, die Datumswerte aus einer Tabelle anzeigt:

Private Sub UserForm_Initialize()
    F6.DATE2.RowSource = "=TOBEBILLED!A2:A10" ' Beispiel für die Datenquelle
End Sub

Private Sub ComboBox1_Change()
    Cells(1, 1).Value = CDate(ComboBox1.Value) ' Datum in die Zelle A1 schreiben
End Sub

In diesem Beispiel wird das ausgewählte Datum in die Zelle A1 geschrieben, nachdem du es in der ComboBox ausgewählt hast.


Tipps für Profis

  • Verwende IsDate: Bevor du CDate aufrufst, prüfe, ob der Wert ein gültiges Datum ist, um Laufzeitfehler zu vermeiden.

    If IsDate(ComboBox1.Value) Then
        ComboBox1.Value = CDate(ComboBox1.Value)
    End If
  • Formatierung: Überlege, wie du das Datum formatieren möchtest (z.B. TT.MM.JJJJ). Du kannst die Formatierung in der Zelle steuern, in die das Datum geschrieben wird.


FAQ: Häufige Fragen

1. Warum wird das Datum als Zahl angezeigt?
Das Datum wird als Zahl angezeigt, weil Excel intern Datumswerte als fortlaufende Zahlen speichert. Um es korrekt darzustellen, musst du es in ein Datumsformat umwandeln.

2. Wo finde ich die VBA-Hilfe?
Die VBA-Hilfe erreichst du im Editor über das Menü "Hilfe" oder durch Drücken von F1. Du kannst auch Online-Ressourcen nutzen, um spezifische Fragen zu klären.

3. Kann ich die ComboBox in einer anderen Excel-Version verwenden?
Ja, die beschriebenen Verfahren sollten in den meisten aktuellen Excel-Versionen funktionieren. Achte jedoch auf Unterschiede in der Benutzeroberfläche und den verfügbaren Funktionen.

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