Listbox auslesen, Multiselect

  • Excel

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Miri1135.

    Listbox auslesen, Multiselect

    Hallo zusammen,

    ich brauche ganz dringend Hilfe =):

    Ich habe eine Userform mit zwei Listboxen erstellt.
    In die eine Listbox werden die Namen aller Beteiligten eines Projektes eingelesen und in der anderen Listbox kann man die Sitzung auswählen um die es geht.
    Nun soll man sich die Beteiligten zu der Sitzung auswählen können, die an der Sitzung teilgenommen haben... Hoffe soweit ist das verständlich.
    Ich bekomme es aber nicht hin, dass die ausgewählten Beteiligten richtig in die Tabelle neben Sitzung 1 etc. ausgegeben werden. Und zwar pro Name eine Zelle in Spaltenrichtung.

    Ich hoffe mir kann jemand helfen.

    Vielen Dank schon mal.

    Miri
    Bilder
    • Unbenannt.JPG

      57,29 kB, 859×381, 1.610 mal angesehen
    Grundsätzlich erhältst du bei Single Selection Mode so das selektierte Item:

    Visual Basic-Quellcode

    1. item = listbox1.value


    Bei Multiselect und einer Spalte so

    Visual Basic-Quellcode

    1. For n = 0 To ListBox1.ListCount - 1
    2. If ListBox1.Selected(n) = True Then
    3. ListBox1.List(n, 0))
    4. End if
    5. Next


    Ansonsten musst du dich ein bisschen klarer ausdrücken was genau du suchst.

    LG
    Das ist meine Signatur und sie wird wunderbar sein!
    Hallo,

    ich habe mal 3 Bilder angehängt, ich hoffe dadurch kann man besser erkennen was ich brauche.
    In der Tabelle auf dem Blatt Beteiligte gebe ich alle Namen an, die an einem Projekt beteiligt sind.
    Die Listbox, die ich auf dem Blatt Sitzungen mit dem Button Teilnehmer hinzufügen aufrufen kann, zieht sich die Daten aus der Spalte A in Beteiligte und Spalte B in Sitzungen.
    Nun soll für jede Sitzung ausgewählt werden, wer an dieser teilgenommen hat. Siehe Bild 22.
    Die Teilnehmer sollen anschließend zu der jeweiligen Sitzung ab "G" eingetragen werden.
    Ich bekomme es aber leider nicht hin, dass pro Zelle nur ein Teilnehmer eingetragen wird und nicht alle Teilnehmer in eine Zelle geschrieben werden.

    Vielen Dank für eure Hilfe!
    Bilder
    • 11.JPG

      158,39 kB, 761×935, 1.906 mal angesehen
    • 22.JPG

      165,93 kB, 1.129×951, 1.980 mal angesehen
    • 33.JPG

      169,48 kB, 1.541×965, 1.791 mal angesehen
    Hallo Miri,

    Miri1135 schrieb:

    pro Zelle nur ein Teilnehmer


    Wie fasst du denn die jew. Personen nach deiner Markierung/dem selektieren auf?
    Packst du diese in einen String, oder machst du hier ein Array?
    Wenn Sie alle in einem String sind, und du

    VB.NET-Quellcode

    1. .Range("G5")


    nutzt, packt er alle in eine Zelle.

    Du müsstest diese also in ein Array stecken und dann mit einer For Schleife reinschreiben.
    Zeig uns mal deinen Code zum einfügen. :)

    Drahuverar
    Option Strict On!
    Ich habe als RowSource einen Bereich angegeben. (Beteiligte) : Bild 55. Das gleiche auch mit den Sitzungen.
    Und den Namen in Spalte 1 stelle ich mir zs, wie in Bild 44 zu sehen.
    Bilder
    • 44.JPG

      101,17 kB, 1.381×723, 1.506 mal angesehen
    • 55.JPG

      220,67 kB, 1.145×884, 2.013 mal angesehen
    Bei deinem Codebeispiel sieht man ja gar nix von der Listbox.
    Also so kannst du die selektierten Namen rausfinden und (ggf. noch kürzen da ja auch die Abteilung in der Listbox steht)

    Visual Basic-Quellcode

    1. dim column as Long, row as Long, n as Long
    2. column = 7 'spalte g
    3. row = 5 + ListboxSitzungen.ListIndex 'hier muss die row ja vermutlich noch abhängig von listbox "Sitzung" gesetzt werden. ich geh davon aus das die erst row immer 5 ist. Listindex gibt den index des selektierten items zurück, -1 bedeutet das kein item selektiert ist. Das fang ich hier nicht ab, musst du vorher prüfen..
    4. For n = 0 To ListBoxTeilnehmer.ListCount - 1
    5. If ListBoxTeilnehmer.Selected(n) = True Then
    6. Cells(row, column).Value = ListBoxTeilnehmer.List(n))
    7. column = column + 1
    8. End if
    9. Next


    LG
    Das ist meine Signatur und sie wird wunderbar sein!