Hoffnungsvoll, dass mich ein hilfsbereiter Experte erhört, hier die Schilderung:
Es existiert eine intelligente Tabelle ("GesamtlisteHerren") in "Tabelle1":
- Von A:AM befinden sich in jeder Zeile Daten zu einer bestimmten Person (Name,Abteilung,Körpergröße,Rückenlänge, etc.)
- Sie umfasst Daten aller Sänger, Solisten, Choristen etc., die an einem Opernhaus angestellt sind.
Ziel:
Das Anlegen von individuellen Listen für eine bestimmte Produktion (z.B. Tristan und Isolde), da nicht jeder der Darsteller in jeder Produktion zum Einsatz kommt. Das Ganze sollte so benutzerfreundlich wie möglich sein.
Ansatz:
Eine Userform mit folgenden Steuerelementen
KomboBox (Abteilungen) mit dazugehörigem CommandButton(OKAbteilung)
- Benutzer hat die Auswahl zw. 6 Abteilungen (Chor,Ballett,Solisten etc.)
- wenn Auswahl getroffen: Klick auf Button
(filtert intelligente Tabelle nach der gewählten Abteilung;
Kopiert Range("C:C") [Spalte, in der die Namen stehen] in "Tabelle3" Range("A:A")
Das konnte ich so lösen, wahrscheinlich nicht überaus elegant:
Private Sub OkAbteilung_Click()
Dim i As Variant
i = Abteilungen.Value ausgewählter Wert in Kombobox(Abteilungen)
ActiveSheet.ListObjects("GesamtlisteHerren").Range.AutoFilter Field:=2, Criteria1:=i
Application.ScreenUpdating = False
ActiveSheet.Range("C:C").Copy Spalte mit allen Namen der Abteilung
ThisWorkbook.Worksheets("Tabelle3").Activate
Columns("A:A").Select
ActiveSheet.Paste
Worksheets("Tabelle1").Activate
Application.ScreenUpdating = True
End Sub
Mein Problem:
ListBox(ListeNamen) mit Multiselect-Eigenschaft und dazugehörigem CommandButton(OKNamen)
- RowSource ist in Tabelle3 Range(A2:A50) [mehr Einträge wird es nie geben] das funktioniert soweit
- OKNamen hat noch keinen funktionierenden Code, ich bekomme es einfach nicht hin
Ich möchte, dass, nachdem die Mehrfachauswahl in der Listbox(ListeNamen) getroffen wurde, man OKNamen klickt und dadurch die intelligente Tabelle("GesamtlisteHerren") in "Tabelle1" erneut gefiltert wird, so dass nur noch die in der Listbox ausgewählten Namen erscheinen. Diese sollen dann von Spalte B:AM ohne Tabellenüberschriften (und nur die sichtbaren Zellen) kopiert und in "Tabelle4" übertragen werden mit
Tabelle4.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) .PasteSpecial Paste:=xlPasteValues
Oder es würde auch reichen, wenn die Tabelle nicht sichtbar gefiltert wird, aber trotzdem nur die ausgewählten Namen samt zugehöriger Zeile in Tabelle4 übertragen werden.
Ich habe keinen Dunst, wie ich mehrere ausgewählte Namen ansprechen soll, um genau nach diesen Begriffen zu filtern. Ich suche und versuche nun schon seit zwei Tagen, lese mich durch Foren und verzweifel langsam, aber sicher.
Folgende Fragmente könnten Teil der Lösung sein oder auch nicht, haha:
dim i as integer
For i = 0 To ListBox1.ListCount 1
If ListBox1.Selected(i) = True Then ?
Oder man geht über den Index der angewählten Einträge? Indexnummer +2= Zeile, die kopiert werden soll?
Es ist das letzte Puzzleteil. Ich wäre unheimlich dankbar, wenn sich jemand meines Problems annimmt.
Vielen Dank im Voraus und beste Grüße
Anja