Userform, Combobox, Datumsformat

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Userform, Combobox, Datumsformat
von: Kulo
Geschrieben am: 13.08.2015 18:07:57

Hallo Zusammen,
ich hab mich jetzt mal an die Userform ran gewagt. Tolles Spielzeug! ;-)
Leider hab ich ein Problem mit dem Format der Anzeige einer Combobox. Die Auswahlliste enthält Datumswerte die auch passen, aber vom Format her besser als "MMM.JJ" in der Combobox angezeigt werden sollten. Bisher steht da "WT. DD.MM.JJJJ".
Die Übergabe der Daten an das Tabellenblatt funktioniert soweit. Aber das Datum wird im Textformat an die Zelle weiter gegeben.
CDate bringt mich auch nicht weiter.
???
Vielleicht könnte mal jemand den Code überfliegen.


Private Sub UserForm_Initialize()
'Werte bei Aufruf des Formulars eintragen, Formular initialisieren
        
    With Me
    
            '.cboDatvon = Format(cboDatbis, "MMM.JJ")
            '.cboDatbis = Format(cboDatvon, "MMM.JJ")
            
        ' Ich dachte, hiermit kann ich die Combobox "cboDatvon" und "cboDatbis" von
        ' vornherein anweisen, die eingelesenen Daten als Datum zu behandeln.
        ' Geht irgendwie nicht
        
        
        .cboDatvon = Worksheets("dynEinAus").Range("F7")
        .cboDatbis = Worksheets("dynEinAus").Range("G7")
        .cboDatvon.List = Range("Startmonat").Value
        .cboDatbis.List = Range("Endmonat").Value
        
    End With
End Sub
Private Sub cmdUebernehmen_Click()
'Fügt die Werte ins Tabellenblatt und schließt das Formular frmDatDiagramm
    
    With Worksheets("dynEinAus")
    
        'Hier wollte ich mir "Cdate" zu nutze machen, um den Wert als Datum in das     _
entsprechende Tabellenblatt
        'einzuschreiben:
        ' "Cells(12, 6).Value = CDate(Me.cboDatvon.Value)"
        ' "Cells(12, 7).Value = CDate(Me.cboDatbis.Value)"
        'Value wird korrekt angezeit, aber der Typ verträgt sich nicht mit CDate.
    
        .Cells(12, 6).Value = Me.cboDatvon.Value
        .Cells(12, 7).Value = Me.cboDatbis.Value
        
        'Jetzt bin ich soweit, dass der Wert von der Combobox in die jeweiligen Felder  _
eingetragen wird. Jedoch
        'als Text und ich nicht wie von mir erhofft als Datumswert.
        
         End With
    
    Unload frmDatDiagramm
End Sub
Private Sub cmdAbbruch_Click()
'Schließt das Formular frmDatDiagramm
    Unload frmDatDiagramm
End Sub
Würde mich über ein Feedback freuen.
Vielen Dank im Voraus und
VG
Kulo

Bild

Betrifft: AW: Userform, Combobox, Datumsformat
von: Nepumuk
Geschrieben am: 13.08.2015 18:16:58
Hallo,
versuch es mal so:
Cells(12, 6).Value = CDate(Mid$(cboDatvon.Value, 5))
Gruß
Nepumuk

Bild

Betrifft: AW: Userform, Combobox, Datumsformat
von: Kulo
Geschrieben am: 13.08.2015 18:47:12
Hallo Nepomuk,
vielen Dank für die schnelle Antwort.
Ganz passt es noch nicht, aber ein großer Schritt weiter:
Der Wert in der Zelle auf dem Tabellenblatt kommt als Datumswert an. ;-)
Leider stimmt das Datum nicht überein mit dem Wert aus der Userform.
Wenn als Text mit meinem Code "Di 01.04.2014" ankommt, dann ist mit deinem Code der Datumswert
der "07 12 4752".
Kannst Du bitte nochmal schauen?
Danke nochmals.

Bild

Betrifft: AW: Userform, Combobox, Datumsformat
von: Nepumuk
Geschrieben am: 13.08.2015 18:51:22
Hallo,
kann ich nicht nachvollziehen. kannst du eine Mustermappe hochladen in der dieser Fehler auftritt?
Gruß
Nepumuk

Bild

Betrifft: AW: Userform, Combobox, Datumsformat
von: Kulo
Geschrieben am: 13.08.2015 19:41:00
Hallo Nepumuk,
ich hab schnell mal was getrickt. ;-)

https://www.herber.de/bbs/user/99550.xlsm

Bitte schau nochmal. Ich hoffe, die Datei ist aussagekräftig.
Danke vielmals.

Bild

Betrifft: AW: Userform, Combobox, Datumsformat
von: Kulo
Geschrieben am: 13.08.2015 20:01:29
Geht der Link?
https://www.herber.de/bbs/user/99551.xlsm

Bild

Betrifft: AW: Userform, Combobox, Datumsformat
von: Nepumuk
Geschrieben am: 13.08.2015 20:06:10
Hallo,
der Link war kein Problem. Nur ist das Datumsformat nun plötzlich TT.MM.JJJJ und nicht wie in der ersten Anfrage beschrieben. Mit diesem Format genügt CDate ohne Mid-Funktion.
Gruß
Nepumuk

Bild

Betrifft: AW: Userform, Combobox, Datumsformat
von: Kulo
Geschrieben am: 13.08.2015 20:17:18
Meinst Du So?
.Cells(12, 6).Value = CDate(Me.cboDatvon.Value)
.Cells(12, 7).Value = CDate(Me.cboDatbis.Value)
Der Wert wird bei mir als Text übergeben.
Userbild

Bild

Betrifft: AW: Userform, Combobox, Datumsformat
von: Kulo
Geschrieben am: 13.08.2015 20:21:05
...ohne CDate.
Und mit CDate kommt eine Fehlermeldung.
Bei Deinem Ansatz war die Übergabe als Datum. Das ist soweit gut. Es muss an der Formatumwandlung von Text zu Datum liegen.

Bild

Betrifft: AW: Userform, Combobox, Datumsformat
von: Nepumuk
Geschrieben am: 13.08.2015 21:11:19
Hallo,
dann nochmal von vorne, welches Format enthalten die Comboboxen in deiner Originaldatei? Denn zurzeit kenne ich drei:
WT. DD.MM.JJJJ
WT DD.MM.JJJJ
DD.MM.JJJJ
Gruß
Nepumuk

Bild

Betrifft: AW: Userform, Combobox, Datumsformat
von: Kulo
Geschrieben am: 13.08.2015 21:47:47
Hallo Nepumuk,
vielen Dank für Deine Bemühungen.
Ich muss dir leider sagen, dass ich es nicht besser beschreiben kann, als es in der hochgeladenen Datei ersichtlich ist.
Entschuldige bitte meine Unwissenheit: Ich denke, dass Excel intern sowieso mit einer fortlaufenden Zahl beim Datum rechnet und die Formatangabe in der Liste daher nicht von Belang sein dürfte.
Egal, wie das Format in der Zielzelle lautet, ist m.E. das Datum für heute in Excel 42229. Erst die Formatierung in der Zielzelle macht das ganze zu einem Datum (außer Text).
Ich kratze VBA erst an.
Jedenfalls, wenn ich die Zielzelle als Standart formatiere, erhalte ich mit deinem Code beim Datum 1.04.2014 die Zahl 1042014. Aus dieser wird dann im Datumsformat eine utopische Zahl in der Zukunft.
Ist ja auch logisch, wenn meine Annahme von oben stimmt und heute 42229 ist.
Ich werde mal versuchen, die Ausgabe als String abzufangen, zu zerlegen und als Datum zusammen zu setzen. Versuch macht kluch. ;-)
Mit dem Mid$ und Right$ (oder so ähnlich) müsste ich ja da weiterkommen - oder?
Also vielen Dank nochmal und nichts für ungut.
Viele Grüße und eine Gute Nacht
Kulo

Bild

Betrifft: AW: Userform, Combobox, Datumsformat
von: Kulo
Geschrieben am: 16.08.2015 23:20:01
Hallo an Alle, die sich mit einem ähnlichen Problem rumschlagen:
Meine VBA Kenntnisse halten sich arg in Grenzen. Dennoch möchte ich meine Ergebisse zum Problem mitteilen:
Die Formatierung der Zellen aus welchen die Daten in die Liste für die Comboboxen eingelesen werden scheint wohl doch in diesem Fall weniger ausschlaggebend zu sein.
Die Comboboxen in der Userform nehmen sich höchstwahrscheinlich der Einstellungen des Betriebssystems für das kurze und lange Datumsformat an. In der Combobox stand das Datum im Format "Fr. 01.01.2015".
Hier lieferte der Befehl "CDate" nicht das gewünschte Ergebnis.
Nepumuk gab mir aber einen Hinweis, die Daten mit der "Mid-Funktion" auszulesen. Hier kam aber das Ergebnis als Text an oder mit Cdate als Zahl "01012015".
Mid$ war ein guter Hinweis von Nepumuk.
Mit folgendem Code, bei dem es den Experten wahrscheinlich die Haare zu Berge stehen läßt, bin ich meinem Ziel etwas näher gekommen:

Dim VonDate As Date
     With Worksheets("dynEinAus") 
        
        VonDate = DateSerial(CDbl(Mid$(cboDatvon.Value, 10, 4)), CDbl(Mid$(cboDatvon.Value, 7,   _
_
2)), CDbl(Mid$(cboDatvon.Value, 4, 2)))
        .Cells(7, 6).Value = vonDate
     End With

Dennoch liegt des Pudels Kern m.E. in den Einstellungen des Betriebssystems:
Folgende Info hab ich im Netz gefunden:
"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."
Ha, das lange Datumsformat!!!
Ich weiß nicht, ob es gut war, das Datumsformat in Windows auf meinem PC zu ändern und ob dadurch andere Dinge auf meinem PC beeinflusst werden. Nach der Umstellung des Formates auf ein Format ohne Wochentag hat sich die CDate-Funktion jedenfalls von einer freundlicheren Seite gezeigt.
Es ist kein Lösungsvorschlag, sonder nur eine Idee zum Weiterbasteln.
Die Kompatibilität zu anderen Computern ist bei den verschiedenen Einstellungen im OS ja auch irgendwie fraglich... und vor allem, wer hat an meinem Computer am Datumsformat rumgespielt? ;-)
Vielen Dank nochmal an Nepumuk. Wir haben zwar an dem Abend keine Lösung gefunden, aber der Denkanstoß war einiges Wert.
Jeden Tag etwas mehr... ;-)
VG und frohes Basteln
Kulo

Bild

Betrifft: AW: Userform, Combobox, Datumsformat
von: Kulo
Geschrieben am: 16.08.2015 23:16:16
Hallo an Alle, die sich mit einem ähnlichen Problem rumschlagen:
Meine VBA Kenntnisse halten sich arg in Grenzen. Dennoch möchte ich meine Ergebisse zum Problem mitteilen:
Die Formatierung der Zellen aus welchen die Daten in die Liste für die Comboboxen eingelesen werden scheint wohl doch in diesem Fall weniger ausschlaggebend zu sein.
Die Comboboxen in der Userform nehmen sich höchstwahrscheinlich der Einstellungen des Betriebssystems für das kurze und lange Datumsformat an. In der Combobox stand das Datum im Format "Fr. 01.01.2015".
Hier lieferte der Befehl "CDate" nicht das gewünschte Ergebnis.
Nepumuk gab mir aber einen Hinweis, die Daten mit der "Mid-Funktion" auszulesen. Hier kam aber das Ergebnis als Text an oder mit Cdate als Zahl "01012015".
Mid$ war ein guter Hinweis von Nepumuk.
Mit folgendem Code, bei dem es den Experten wahrscheinlich die Haare zu Berge stehen läßt, bin ich meinem Ziel etwas näher gekommen:

Dim VonDate As Date
     With Worksheets("dynEinAus") 
        
        VonDate = DateSerial(CDbl(Mid$(cboDatvon.Value, 10, 4)), CDbl(Mid$(cboDatvon.Value, 7,  _
2)), CDbl(Mid$(cboDatvon.Value, 4, 2)))
        .Cells(7, 6).Value = vonDate
     End With
Dennoch liegt des Pudels Kern m.E. in den Einstellungen des Betriebssystems:
Folgende Info hab ich im Netz gefunden:
"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."
Ha, das lange Datumsformat!!!
Ich weiß nicht, ob es gut war, das Datumsformat in Windows auf meinem PC zu ändern und ob dadurch andere Dinge auf meinem PC beeinflusst werden. Nach der Umstellung des Formates auf ein Format ohne Wochentag hat sich die CDate-Funktion jedenfalls von einer freundlicheren Seite gezeigt.
Es ist kein Lösungsvorschlag, sonder nur eine Idee zum Weiterbasteln.
Die Kompatibilität zu anderen Computern ist bei den verschiedenen Einstellungen im OS ja auch irgendwie fraglich... und vor allem, wer hat an meinem Computer am Datumsformat rumgespielt? ;-)
Vielen Dank nochmal an Nepumuk. Wir haben zwar an dem Abend keine Lösung gefunden, aber der Denkanstoß war einiges Wert.
Jeden Tag etwas mehr... ;-)
VG und frohes Basteln
Kulo

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Userform, Combobox, Datumsformat"