AW: Zweite ListBox nach Auswahl in erster füllen
25.01.2018 10:32:22
fcs
Hallo Floeh,
Benenne deine Tabellenblätter (Tabelle1, Tabelle2, etc) entsprechend den Namen der Abteilungen um (Abt A, Abt B etc).
Dann kann man die Namen der Abteilungen automatisch in die Combobox des Userforms laden.
'Listbox per AddItem mit Auswahldaten füllen
Private Sub ComboBox1_Change()
Dim iRow As Integer
Dim wks As Worksheet
If ComboBox1.ListIndex = -1 Then Exit Sub
'Combobox1 enthält als Liste die Nahmen der Tabellenblätter mit _
Daten die in die Listbox übernommen werden sollen
iRow = 2
ListBox1.Clear
'Blatt mit Daten entsprechend Auswahl in Combobox setzen
Set wks = ActiveWorkbook.Worksheets(ComboBox1.Value)
'Daten aus Spalte A (1) in Listbox anzeigen
Do Until IsEmpty(wks.Cells(iRow, 1))
ListBox1.AddItem wks.Cells(iRow, 1)
iRow = iRow + 1
Loop
End Sub
Private Sub UserForm_Initialize()
Dim wks As Worksheet
'Combobox mit Abteilungs-/Blattnamen füllen
For Each wks In ActiveWorkbook.Worksheets
Select Case wks.Name
Case "Tabelle XYZ", "Tab ABC"
'Diese Tabellen nicht in Combobox anzeigen
Case Else
With Me.ComboBox1
.AddItem wks.Name
End With
End Select
Next
End Sub
Wenn auf den Tabelenblättern der Name der Abteilung immer in einer bestimmten Zelle steht, dann kann man es auch wie folgt lösen.
Wenn alle Daten eines Zellbereichs in einer Listbox angezeigt werden sollen, dann kann man die Listbox auch anders füllen.
' ALTERNATIVE
'Listbox vie Eigenschaft "List" mit Daten aus Zellbereich füllen
Private Sub ComboBox1_Change()
Dim iRow As Integer
Dim wks As Worksheet
If ComboBox1.ListIndex = -1 Then Exit Sub
'Combobox1 enthält als Liste die Nahmen der Tabellenblätter mit _
Daten die in die Listbox übernommen werden sollen
ListBox1.Clear
With ComboBox1
Set wks = ActiveWorkbook.Worksheets(.List(.ListIndex, 1))
End With
With wks
'letzte Zeile mit Inhalt in Spalte A
iRow = .Cells(.Rows.Count, 1).End(xlUp).Row
'Daten aus Zellbereich A2:Axxx in Listbox übernehmen
ListBox1.List = .Range(.Cells(2, 1), .Cells(iRow, 1)).Value2
End With
End Sub
Private Sub UserForm_Initialize()
'Name der Abteilungen wird aus bestimmter Zelle in den Blättern ausgelesen
Dim wks As Worksheet
With Me.ComboBox1
.ColumnCount = 2
.ColumnWidths = "100 Pt;0Pt"
End With
For Each wks In ActiveWorkbook.Worksheets
Select Case wks.Name
Case "Tabelle XYZ", "Tab ABC"
'Diese Tabellen nicht in Combobox anzeigen
Case Else
With Me.ComboBox1
.AddItem wks.Range("A1").Text 'A1 = Zelle mit dem Namen der Abteilung
.List(.ListCount - 1, 1) = wks.Name
End With
End Select
Next
End Sub
Gruß
Franz