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.
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.