31.03.2022, 07:09 (Dieser Beitrag wurde zuletzt bearbeitet: 31.03.2022, 07:12 von soldblub.)
Guten Morgen,
ich habe zwei Listboxen, die ich zusammenführen möchte. Aus Listbox1 wird ein Wert ausgewählt und einen oder mehren Werten aus Listbox2 zugeordnet. Das Ganze mehrmals hintereinander bis aus Listbox1 nicht mehr übrig ist.
Soweit so gut. Natürlich möchte ich jetzt diese "neuen Paare" auch irgendwo sichtbar abbilden. Da stellt sich zum einem die Frage wo, schreibe ich diese "Paare" rein? Listbox, Combobox, Textfeld??? Am Ende sollen Sie in einen Vordruck im ExcelSheet in eine "normale Zelle" untereinander stehen:
Bsp. Peter: Karla, Denise, Lisa Klaus: Karla Lutz: Claudia
grundsätzlich geht das. Da ich diverse Sachen dir schon mit Arrays gemacht habe, würde ich diesen am ehesten noch nachvollziehbaren Weg weiterverwenden. Man kann es natürlich auch über Klassenprogrammierung machen und jede Ausgabe einem dynamisch erzeugten Element zuordnen, aber wenn sich dann später etwas ändert stehst du bei Änderungsversuchen vor viel zu großen Problemen und weißt nicht weiter.
vorstellbarer Lösungsweg: Klick Listbox 1 + mehrere aus Listbox2 -> in neue Zeile Listbox3 Damit hast du auslesbare Ausgaben deiner Zusammenstellung. Die Werkzeuge dazu, soweit ich es in Erinnerung habe, findest du eigentlich schon in deinen Prozeduren.
Neu käme lediglich ein Join hinzu, um Komma hinter die Werte im Array zu schreiben. Zu mehr Hilfe fehlt mir leider heute und morgen die Zeit. Probiere inzwischen schon mal selbst etwas.
anbei ein Schnellschuss - diesmal mal ohne Array aber mit Variablen:
Code:
Private Sub InhalteZuweisen1() Dim varLB1 As String, i As Long, j As Long, varWert As String, varErg As String, varAusgabe As String varLB1 = ListBox1.List(ListIndex, 0)
With ListBox2 For i = 0 To .ListCount - 1 If .Selected(i) = True Then varWert = .List(i, 0) varErg = varErg & varWert & ", " End If Next i varAusgabe = varLB1 & ": " & varErg i = Len(varAusgabe) - 2 varAusgabe = Left(varAusgabe, i) End With With ListBox3 If .ListIndex - 1 Then .AddItem varAusgabe End If End With UserForm_Initialize End Sub
Cool, da warst du schneller als ich. Habe es noch um die variable Listbox1 ergänzt, da bei dir immer "Peter"/der erste Datensatz übernommen wurde.
Private Sub uebertragen1() Dim varLB1 As String, i As Long, j As Long, k As Long, varWert As String, varErg As String, varAusgabe As String
With ListBox1 For k = 0 To .ListCount - 1 If .Selected(k) = True Then varLB1 = .List(k, 0) End If Next k
End With
With ListBox2 For i = 0 To .ListCount - 1 If .Selected(i) = True Then varWert = .List(i, 0) varErg = varErg & varWert & ", " End If Next i varAusgabe = varLB1 & ": " & varErg i = Len(varAusgabe) - 2 varAusgabe = Left(varAusgabe, i) End With With ListBox3 If .ListIndex - 1 Then .AddItem varAusgabe End If End With
jetzt habe ich mal etwas Zeit gehabt und zu Ende gebaut. Es dürften auch hoffentlich keine Fehlerausgaben mehr passieren. Anbei 2 Varianten:
1. Variante arbeitet nur Listbox1 ab 2. Variante falls es so sinnvoller ist / gebraucht wird, arbeitet auch noch die 2. Listbox ab bis Diese Leer ist. Das hat mich einfach mal interessiert.
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:1 Nutzer sagt Danke an Egon12 für diesen Beitrag 28 • soldblub