Registriert seit: 18.06.2020
Version(en): 2019
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
Registriert seit: 22.11.2019
Version(en): 365
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
Registriert seit: 17.04.2019
Version(en): M$ 365 AfE v2009 / Office2013
Code:
Private Sub UserForm_Initialize()
With ListBox1
.List = Range("A1", Range("A1").End(xlDown)).Value
End With
End Sub
Registriert seit: 17.08.2015
Version(en): 19
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
Grüße aus Nürnberg
Armin
Ich benutze WIN 10 (64bit) und Office 19 (32bit)
Registriert seit: 18.06.2020
Version(en): 2019
04.11.2020, 13:38
(Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2020, 13:38 von ottokeil.)
@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
Registriert seit: 22.11.2019
Version(en): 365
04.11.2020, 14:21
(Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2020, 14:21 von volti.)
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
Registriert seit: 22.11.2019
Version(en): 365
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