Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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)
Antworten 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
Antworten Top
#3
Auch ne gute Variante mit mehreren Comboboxen. Mal sehen, ob ich das auf meinen Fall umgemünzt bekomme. Danke schon mal!
Antworten 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
Antworten Top
#5
Silcono, top - läuft!! Danke!!
Antworten Top
#6
Silcono, jetzt geht nur die rowsource eigenschaft nicht mehr? Wie kriege ich die spaltennamen angezeigt? Danke!
Antworten Top
#7
Hallo,

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

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Antworten Top


Gehe zu:


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