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
Und wo in meinem "Loeschen" baue ich es wie ein?
Vielen Dank im Voraus.
soldblub
Hallo Sabrina,
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.
Gruß Uwe
Hallo Uwe,
vielen Dank, probiere weiterhin fleißig aus und teile das Ergebnis zwischendurch.
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
Gruß Uwe
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
UserForm_Initialize
End Sub
die Schleife ist nicht nötig. ich hatte vor ListIndex einfach vergessen die Listbox1 voranzusetzen.
richtig so:
Code:
varLB1 = ListBox1.List(ListBox1.ListIndex, 0)
So muss nicht erst eine Schleife durchlaufen werden.
Gruß Uwe
Eher Code als Einträge löschen.
Hallo Sabrina,
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