VBA Listbox in Abhängigkeit von Combobox
#1
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:


Angehängte Dateien
.xlsm   Test_1.xlsm (Größe: 21,86 KB / Downloads: 9)
Top
#2
Hallo,

du meinst das so ...

https://www.clever-excel-forum.de/attach...?aid=23101
[-] Folgende(r) 1 Nutzer sagt Danke an Flotter Feger für diesen Beitrag:
  • DN_89
Top
#3
Auch ne gute Variante mit mehreren Comboboxen. Mal sehen, ob ich das auf meinen Fall umgemünzt bekomme. Danke schon mal!
Top
#4
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
[-] Folgende(r) 1 Nutzer sagt Danke an silcono für diesen Beitrag:
  • DN_89
Top
#5
Silcono, top - läuft!! Danke!!
Top
#6
Silcono, jetzt geht nur die rowsource eigenschaft nicht mehr? Wie kriege ich die spaltennamen angezeigt? Danke!
Top
#7
Hallo,

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


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste