Hallo zusammen,
ich habe eine ComboBox in meiner Userform eingefügt wie folgt:
Code:
Private Sub ComboBox1_Initialize ()
Me.ComboBox1.RowSource="Liste"
End Sub
Das heißt es werden alle Namen aus der vorher definierten Liste angezeigt. Diese ist nun aber von A1:A100 definiert, aber nur bis A40 gefüllt. Die restlichen Zellen sollen als Puffer für weitere Namen dienen.
Das Problem ist nun, dass mir in der ComboBox dadurch 60 Leeren Auswahlmöglichkeiten dargestellt werden. Wie kann ich das flexibel anpassen?
beste Grüße
Hallo Otto,
hier eine Idee:
PS: Du könntest, je nach Arbeitsweise, die Combobox auch aus der Spalte 5 aus Deiner DatenbankMaterial gefiltert per VBA speisen und auf Deine Projektliste verzichten...
Code:
Private Sub ComboBox1_Initialize()
Dim i As Long
With Sheets("Projektliste")
For i = 7 To .UsedRange.Rows.Count
If .Cells(i, "B").Value = "" Then Exit For
Next i
Me.ComboBox1.RowSource = .Range("B7:B" & i - 1).Address
End With
End Sub
______________________
viele Grüße aus Freigericht
Karl-Heinz
Hallo Otto,
noch etwas dynamischer d.h. falls man einzelne Werte behandeln müsste, kann man auch folgendes verwenden:
Z.Bsp.
With Worksheets("Namen")
ComboBox1.Clear
For K = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
ComboBox1.AddItem
N = ComboBox1.ListCount - 1
ComboBox1.List(N, 0) = .Cells(K, 1).Value
ComboBox1.List(N, 1) = .Cells(K, 2).Value
ComboBox1.List(N, 2) = .Cells(K, 3).Value
ComboBox1.List(N, 3) = .Cells(K, 4).Value
ComboBox1.List(N, 4) = .Cells(K, 5).Value
ComboBox1.List(N, 5) = .Cells(K, 6).Value
ComboBox1.List(N, 6) = .Cells(K, 7).Value
ComboBox1.List(N, 7) = .Cells(K, 8).Value
ComboBox1.List(N, 8) = .Cells(K, 9).Value
ComboBox1.List(N, 9) = .Cells(K, 0).Value
'letzte mögliche Zeile
Next
End With
@volti
Danke für die schnelle Antwort.
Ich habe leider das Problem, dass die Projektliste eigentlich Formel enthält und quasi nur ein Name angezeigt wird, wenn in Tabelle XY ein Name steht ansonsten "" nichts quasi. Bei der ComboBox wird mir jetzt halt trotzdem alles mit leeren Auswahlmöglichkeiten dargestellt
Hallo Otto,
wenn in der Projektliste immer Projekt... steht, könnte man das entsprechend abfangen...
Mit der Like-Abfrage werden Einträge auf Beginn mit "Projekt" geprüft und wenn das dann nicht mehr zutrifft, wird rausgesprungen.
Vielleicht klappt es ja so:
Code:
Private Sub ComboBox1_Initialize()
Dim i As Long
With ThisWorkbook.Sheets("Projektliste")
For i = 7 To .UsedRange.Rows.Count
If Not .Cells(i, "B").Value Like "Projekt*" Then Exit For
Next i
ComboBox1.RowSource = .Name & "!" & "B7:B" & i - 1
End With
End Sub
______________________
viele Grüße aus Freigericht
Karl-Heinz
Hallo Otto,
hier ergänzend noch eine Variante, die auf den benamten Bereich aufsetzt. Den könnte man dann auch problemlos verschieben und erweitern.
Code:
Private Sub ComboBox1_Initialize()
Dim Obj As Range, oBer As Range
Set oBer = Range("ListeProjekte")
For Each Obj In oBer
If Not Obj.Value Like "Projekt*" Then Exit For
Next Obj
With oBer
ComboBox1.RowSource = .Parent.Name & "!" & Replace(.Address(0, 0), _
(.Row + .Rows.Count - 1), (Obj.Row - 1))
End With
End Sub
______________________
viele Grüße aus Freigericht
Karl-Heinz