Clever-Excel-Forum

Normale Version: VBA Listbox in Abhängigkeit von Combobox
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

ich bin noch absoluter VBA-Neuling und stehe vor einem recht umfangreichen Projekt - da scheitert es noch an wahrscheinlich einfachen Dingen wie bei folgendem Problem:

Die Userform in der angehängten Bsp.Datei enthält eine Combo und eine mehrspaltige Listbox.

Ich möchte, dass in der Listbox nur ausgegeben wird (Spalte A-E) , was zuvor in der Combobox (Spalte A) ausgewählt wurde. Huh

Vielen Dank! :18:
Auch ne gute Variante mit mehreren Comboboxen. Mal sehen, ob ich das auf meinen Fall umgemünzt bekomme. Danke schon mal!
Hi,

falls du etwas direkt auf deine Tabelle angepasst haben möchtest, habe ich hier was für dich.
Einfach deine Codezeilen durch die folgenden Codezeile ersetzen und mal testen:


Code:
Option Explicit

Private Sub UserForm_Initialize()
   Dim lngZeileMax As Long
   Dim wksBlatt As Worksheet
   Set wksBlatt = tbl_Ma
   Dim i As Long
   Dim LRow As Long
   
   Lst_Ma.Clear

   lngZeileMax = wksBlatt.UsedRange.Rows.Count

   With Me.Lst_Ma
       .ColumnCount = 5                        'Spaltenanzahl festlegen
       .ColumnHeads = True                     'Spaltenüberschriften anzeigen
       .ColumnWidths = "90;150;150;60;60"      'Spaltenabstände festlegen
       .MultiSelect = fmMultiSelectMulti       'Mehrfachmarkierung festlegen
       .BackColor = RGB(165, 165, 165)         'Hintergrundfarbe festlegen
       .Font.Size = 12                         'Schriftgröße festlegen
       .Font.Bold = True                       'Schriftschnitt Fett einstellen
       
   End With
       
       For i = 2 To lngZeileMax
           With Lst_Ma
       
               .AddItem wksBlatt.Cells(i, 1)
               .List(.ListCount - 1, 1) = wksBlatt.Cells(i, 2)
               .List(.ListCount - 1, 2) = wksBlatt.Cells(i, 3)
               .List(.ListCount - 1, 3) = wksBlatt.Cells(i, 4)
               .List(.ListCount - 1, 4) = wksBlatt.Cells(i, 5)
           
           End With
       Next


'1. Möglichkeit der Combobox: Item per Hand eingeben

   With UserForm1.Box1
        .AddItem "Kakao"
        .AddItem "Banane"
        .AddItem "Schoko"
        .AddItem "Eis"
        .AddItem "Sauce"
        .AddItem "Kaffee"
        .AddItem "*"
       
        UserForm1.Box1.Text = "Einrichtung auswählen"
   End With

End Sub

Private Sub Box1_Change()

   Dim rngcellPLZ As Range

   Dim PLZ As String

   With tbl_Ma.Range("A1:A65536")

       UserForm1.Lst_Ma.Clear

       Set rngcellPLZ = .Find(UserForm1.Box1)

       If Not rngcellPLZ Is Nothing Then

           PLZ = rngcellPLZ.Address

           Do
               With UserForm1.Lst_Ma
                   .ColumnCount = 5
                   .ColumnHeads = True
                   .ColumnWidths = "90;150;150;60;60"
                   .AddItem
                   
                   .List(.ListCount - 1, 0) = rngcellPLZ.Value
 
                   .List(.ListCount - 1, 1) = rngcellPLZ.Offset(0, 1).Value
                   
                   .List(.ListCount - 1, 2) = rngcellPLZ.Offset(0, 2).Value

                   .List(.ListCount - 1, 3) = rngcellPLZ.Offset(0, 3).Value
                   
                   .List(.ListCount - 1, 4) = rngcellPLZ.Offset(0, 4).Value

               End With

               Set rngcellPLZ = .FindNext(rngcellPLZ)

           Loop While Not rngcellPLZ Is Nothing And rngcellPLZ.Address <> PLZ

       End If

   End With
   
Lst_Ma.ListIndex = Lst_Ma.ListCount - 1

End Sub


Grüße
Silcono
Silcono, top - läuft!! Danke!!
Silcono, jetzt geht nur die rowsource eigenschaft nicht mehr? Wie kriege ich die spaltennamen angezeigt? Danke!
Hallo,

schreib die Spaltenname über der ListBox in Labels ... sollte bei 5 Spalten doch wohl kein Problem sein.