Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Userform Listbox Mehrfachauswahl: Tabelle nach gewählten Begriffen filtern

Betrifft: Userform Listbox Mehrfachauswahl: Tabelle nach gewählten Begriffen filtern von: Anja
Geschrieben am: 10.02.2020 16:24:55

Hallo in die Runde. Ich bin noch nicht lang dabei, habe Spaß an Excel und VBA und lerne gern dazu. Gerade sitze ich allerdings vor einem Problem, welches ich einfach noch nicht zu lösen vermag.
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

Betrifft: AW: Userform Listbox Mehrfachauswahl: Tabelle nach gewählten Begriffen filtern
von: Matthias
Geschrieben am: 10.02.2020 21:07:36

Moin!
Auf die Schnelle mal ein paar Ideen. Kann sie aber grad nicht testen.
1. Füge bei der tabelle eine Spalte hinzu. Dann gehst du mit
If ListBox1.Selected(i) = True Then

durch und fügst. bswp. eine 1 ein. Die anderen Zellen bleiben leer (vorher leeren). Dann kannst du nach der Spalte filtern und hast nur deine ausgewählten.

oder
2. Bastel dir ein Array mit den Werten für den Filter (also nur den ausgewählten Namen). Wieder mit der Schleife durchegehen und alle Namen in ein Array packen. Das übergibst du dann an den Filter. bspw. wie hier (bin mir nicht sicher, ob das bei intell. Tabellen auch egeht)
https://stackoverflow.com/questions/38404176/using-string-array-as-criteria-in-vba-autofilter

3. Du könnstest dir ein Array erstellen (nicht für den Filter sondern mit allen Daten der Zeile), in welches du die gewünschten Daten einträgst. DAzu wieder durch die Schleife gehen und wenn ausgewählt, die Daten aus der Zeile mittels Schleife in dein Array eintragen. Das kannst du dann gleich in das neue Blatt eintragen.

VG

Betrifft: AW: Userform Listbox Mehrfachauswahl: Tabelle nach gewählten Begriffen filtern
von: Anja
Geschrieben am: 10.02.2020 23:07:09

Hey Matthias, vielen lieben Dank für deine Antwort und deine Ideen. Ich werd mich gleich morgen nach der Arbeit damit auseinandersetzen und hoffen, dass es hilft und ich ein Stück weiterkomme.

Beste Grüße

Betrifft: AW: Userform Listbox Mehrfachauswahl: Tabelle nach gewählten Begriffen filtern
von: Matthias
Geschrieben am: 11.02.2020 16:05:18

Moin!
HAtte eben mal Zeit. HIer mal eine Beispielmappe mit allen 3 Möglichkeiten. Die Zweite sollte klappen. Kann ich auf dem Ex03 System hier aber grad nicht testen.
https://www.herber.de/bbs/user/135132.xls
Die UF ist überall die selbe. Der Übertrag erfolgt beim Drücken der Schaltfläche. Im Blatt Ergebnis ist dann der Übertrag. (Beende der UF und Blatt umscahlten musst du selber nochmachen, hatte ich vergessen).
VG

Betrifft: AW: Userform Listbox Mehrfachauswahl: Tabelle nach gewählten Begriffen filtern
von: Anja
Geschrieben am: 11.02.2020 17:57:01

Matthias, ich bin platt und weiß gar nicht, wie ich dir danken soll. Deine Beispielmappe funktioniert natürlich ausgezeichnet. Mir rauchte schon wieder seit einigen Stunden der Kopf, bis ich gerade deine Antwort las. Jetzt kann ich es Schritt für Schritt nachvollziehen und an meine Mappe anpassen, das bekomme ich hin, denke ich. Erleichterung.
Ich gebe mal Meldung, wenn ich es geschafft habe.
Nochmals Danke für deine Mühen und liebe Grüße.

Beiträge aus dem Excel-Forum zum Thema "Userform Listbox Mehrfachauswahl: Tabelle nach gewählten Beg"