Microsoft Excel

Herbers Excel/VBA-Archiv

Datumswerte in Combo ohne Doppel | Herbers Excel-Forum


Betrifft: Datumswerte in Combo ohne Doppel von: Mesut
Geschrieben am: 09.12.2009 21:45:08

Hallo Excel Freunde,

kann mir bitte jemand bei folgendem Poblem weiterhelfen?
ich habe zwei ComboBoxen (vonDatum und bisDatum) in einer UF und diese müssen mit den Datumswerten befüllt werden, die in der Tabelle1/SpalteA aufgelistet sind. z.B.:
04.01.2009
12.01.2009
12.01.2009
06.02.2009
07.02.2009
03.03.2009
...
Diese Werte möchte ich allerdings als
Jan 09
Feb 09
...
übernehmen, da die Liste in den Combos sonst unendlich lang werden würden. Natürlich sollten diese Einträge dann auch ohne Doppelte und aufsteigend sortiert dargestellt werden.

Und wenn der User von und bis Daten ausgewählt hat, sollen in der Tabelle die entspr. Zeilen markiert und ausgedruckt werden.

Ich danke für jede Anregung

Mesut

  

Betrifft: Monatswerte ohne Redundanz in Combobox auflisten von: NoNet
Geschrieben am: 09.12.2009 22:26:30

Hallo Mesut,

mit folgendem Code kannst Du die Monatswerte nach Monat gruppiert ohne Redundanzen in die ComboBox übertragen :

Private Sub UserForm_Activate()
    Dim objColl As New Collection
    Dim lngZ As Long
    
    On Error Resume Next
    ComboBox1.Clear 'Alte inhalte löschen
    
    'Werte der Spalte A bis letzte gefüllte Zeile
    For lngZ = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        objColl.Add Format(Cells(lngZ, 1), "MMM YYYY"), Format(Cells(lngZ, 1), "MMM YYYY")
    Next
    
    For lngZ = 1 To objColl.Count
        ComboBox1.AddItem objColl(lngZ)
    Next
End Sub
Gruß, NoNet


  

Betrifft: AW: Monatswerte ohne Redundanz in Combobox auflisten von: Mesut
Geschrieben am: 10.12.2009 13:57:15

Hallo NoNet,

Tino und Du habt das Problem höchst elegant und mega schnell gelöst. Herzlichsten Dank :)

LG

Mesut


  

Betrifft: hier noch eine Version... von: Tino
Geschrieben am: 10.12.2009 07:09:22

Hallo,

Private Sub UserForm_Initialize()
Dim myAr()
Dim Dic As Object
Dim A As Long

Set Dic = CreateObject("Scripting.Dictionary")

'Tabelle anpassen 
With Sheets("Tabelle1")
    'Ab A2 bis zur letzten gefüllten Zelle in Spalte A 
    myAr = Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Value
End With

For A = 1 To Ubound(myAr)
 If IsDate(myAr(A, 1)) Then
    Dic(Format(myAr(A, 1), "mmm yy")) = 0
 End If
Next A

'Daten an die Comboboxen übergeben 
ComboBox1.List = Dic.keys
ComboBox2.List = Dic.keys
End Sub
Gruß Tino


  

Betrifft: AW: hier noch eine Version... von: Mesut
Geschrieben am: 10.12.2009 13:52:28

Hallo Tino,

auch deine Lösung klappt hervorragend, Danke!
Ich schau mal welche der beiden Lösungen ich am besten in mein Makro implementieren kann.

LG

Mesut


Beiträge aus den Excel-Beispielen zum Thema "Datumswerte in Combo ohne Doppel"