Clever-Excel-Forum

Normale Version: Auswertung mit ComboBox
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute!

In meiner EA Liste habe ich 2 ComboBoxen eingefügt. Mit diesen ComboBoxen soll nur das Jahr aus der Spalte B ab Zeile 13 angezeigt werden.
Das funktioniert auch. Möchte aber gerne immer nur ein Jahr angezeigt bekommen.
Beispiel: in der Spalte steht 5x ##.##.2011 ; 3x ##.##.2012; 8x ##.##.2013 usw.
Dann soll in den ComboBoxen nur jeweils 1x 2011;2012;2013 usw. stehen.
Ist dies möglich?
Hallo!
Probiere mal folgendes für ComboBox1 und 2:
Code:
Private Sub ComboBox1_DropButtonClick()
Dim Zeile As Long
ComboBox1.Clear
For Zeile = 13 To Cells(Rows.Count, 2).End(xlUp).Row
  If Year(Cells(Zeile, 2)) <> Year(Cells(Zeile + 1, 2)) Then _
     ComboBox1.AddItem Year(Cells(Zeile, 2))
Next Zeile
End Sub

Gruß Ralf
Hallo Ralf!

Danke für die Hilfe!
Funkt ja fast so wie ich das haben möchte. Nur sollte auch das Jahr was dann ausgewählt wird auch in der CB dann stehen.
Bei mir ist das nicht so, da wird die CB wieder gelöscht.
Gibt es da noch eine Hilfe?
Hi

probier mal. Zum erstmaligen Befüllen diesen Code in 'Diese Arbeitsmappe'
Code:
Option Explicit

Private Sub Workbook_Open()
  With Sheets("Kassenbuch")
     .SingleItem Sheets("Kassenbuch").ComboBox1
     .SingleItem Sheets("Kassenbuch").ComboBox2
     .ComboBox1.ListIndex = 0
     .ComboBox2.ListIndex = 0
  End With
End Sub

Dieser Code in das Modul der Tabelle Kassenbuch, die Werte werden noch zusätzlich abhängig vom Wert der anderen Combobox eingeschränkt
Code:
Option Explicit

Private Sub ComboBox1_DropButtonClick()
  SingleItem ComboBox1, , CInt(ComboBox2.Value)
End Sub

Private Sub ComboBox2_DropButtonClick()
  SingleItem ComboBox2, CInt(ComboBox1.Value)
End Sub

Sub SingleItem(ByRef objCB As ComboBox, Optional MinJahr, Optional MaxJahr)
  Dim i As Integer
  Dim D1 As Object
 
  If IsMissing(MinJahr) Then MinJahr = 1900
  If IsMissing(MaxJahr) Then MaxJahr = 2099
  Set D1 = CreateObject("Scripting.Dictionary")
  For i = 13 To Cells(Rows.Count, 2).End(xlUp).Row
     If Year(Cells(i, 2).Value) >= MinJahr And Year(Cells(i, 2).Value) <= MaxJahr Then
        D1(Format(Cells(i, 2).Value, "yyyy")) = 0
     End If
  Next
  objCB.List = D1.Keys
End Sub
Hallo Winny!

Danke für die Hilfe!
Das ist ja das was ich haben wollte, SUUUUper.
Werde noch ein bissel Testen.
Kannst du den Code noch einmal beschreiben, also was er in den einzelnen Schritten macht?
Aber nur wenn es dir nicht zuviel arbeit macht