juweee
Goto Top

Excel VBA: Listbox Ausgabe über Comboboxen filtern

Hallo,
hat jemand zufällig ein Beispiel oder einen Link in peto, der zeigt wie die Ausgabe in einer Listbox über Comboboxen gefiltert werden können?

Würd mich freuen und sag auch schon mal danke im Voraus

LG
Juwee

Content-Key: 272449

Url: https://administrator.de/contentid/272449

Printed on: April 23, 2024 at 23:04 o'clock

Mitglied: 114757
Solution 114757 May 20, 2015 at 15:09:44 (UTC)
Goto Top
Beispiel:
http://we.tl/bgfwB4vv0O

Gruß jodel32
Member: Juweee
Juweee May 21, 2015 at 11:10:52 (UTC)
Goto Top
Hallo Jodel,

vielen Dank für deine Demo, die ich vom Ansatz auch halbwegs verstanden habe.
Wie das ganze mit mehren Box gehen soll, zumal diese auch noch im nächsten Schritt voneinander abhängig sein sollen ist mir ein Rätsel.
Ich beschäftige mich hier und da, notgedrungen mit VBA, aber von den Tiefen bin ich noch sehr weit entfernt.

Option Explicit

Private Sub UserForm_Initialize()
    
    Dim oWks As Worksheet, i As Integer
    
    With Me.ComboBox6
        For Each oWks In ThisWorkbook.Sheets
           .AddItem oWks.Name
        Next
       .ListIndex = 0
       .SetFocus
       .SelStart = 0
       .SelLength = Len(.Text)
    End With
    
End Sub

Private Sub ComboBox6_Change()

    Dim objDic As Object, i As Integer, selSheet As String, lngZ As Long, lCol As Long, lRow As Long
        
    With Me.ComboBox6
        Sheets(.Value).Activate
        selSheet = ComboBox6.Value
        lRow = Cells(Rows.Count, 1).End(xlUp).Row
        lCol = Cells(1, 256).End(xlToLeft).Column
    End With

    Set objDic = CreateObject("Scripting.Dictionary")  
 
    For i = 1 To 5
        For lngZ = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            objDic(Cells(lngZ, i).Value) = 0
        Next
     
        With Me.Controls("ComboBox" & i)  
            .List = objDic.Keys
            .ListIndex = 0
            .SetFocus
            .SelStart = 0
            .SelLength = Len(.Text)
        End With
        
        objDic.RemoveAll
    Next
              
    With Me.Controls("Listbox")  
        .ColumnCount = lCol
        .ColumnHeads = True
        .RowSource = Sheets(selSheet).Range(Cells(2, 1), Cells(lRow, lCol)).Address
        AutofitWidths
    End With
      
End Sub

Private Sub AutofitWidths()

Dim Row As Long, Col As Long, ColWidth As String, MaxWidth As Double

Label.Visible = False
Label.WordWrap = False
Label.AutoSize = True

For Row = 0 To ListBox.ColumnCount - 1
    MaxWidth = 0
    For Col = 0 To ListBox.ListCount - 1
        Label.Caption = ListBox.Column(Row, Col) & ",,,"  
        If MaxWidth < Label.Width Then
            MaxWidth = Label.Width
        End If
    Next Col
    ColWidth = ColWidth & CLng(MaxWidth + 1) & ";"  
Next Row
ListBox.ColumnWidths = ColWidth

End Sub

Der "code" könnte auch als Synonym für chaotisch stehen.

LG
Juwee