Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Werte aus Listbox mehrmals zusammenführen
#1
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


Angehängte Dateien
.xlsm   MUster_ListboxLoeschen - Kopie.xlsm (Größe: 25,18 KB / Downloads: 4)
Antworten Top
#2
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
Antworten Top
#3
Thumbs Up 
Hallo Uwe, 

vielen Dank, probiere weiterhin fleißig aus und teile das Ergebnis zwischendurch.
Antworten Top
#4
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
Antworten Top
#5
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
Antworten Top
#6
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
Antworten Top
#7
Eher Code als Einträge löschen.


Angehängte Dateien
.xlsb   __ListBox kombi.xlsb (Größe: 20,51 KB / Downloads: 5)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#8
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


Angehängte Dateien
.xlsm   MUster_ListboxLoeschen beide LB abarbeiten.xlsm (Größe: 26,58 KB / Downloads: 3)
.xlsm   MUster_ListboxLoeschen.xlsm (Größe: 27,72 KB / Downloads: 2)
[-] Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:
  • soldblub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste