Clever-Excel-Forum

Normale Version: Werte aus Listbox mehrmals zusammenführen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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