Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Abhängige Filterung und Speicherung über Userform

VBA - Abhängige Filterung und Speicherung über Userform
16.09.2024 15:24:36
Stefan
Hallo zusammen,

zunächst erstmal vielen Dank an das tolle Forum, wo ich schon viel Input herausziehen und auch lernen konnte :)

Da ich jetzt allerdings schon viele Stunden mit einer Datei am rumwerkeln und noch nicht wirklich zu einem Ergebnis gekommen bin, muss ich mich auch selber mal an das Forum wenden. Ich habe bereits nach längerem Suchen eine Excel-Liste gefunden, wo zunächst über drei abhängige Filter (ComboBoxen) Ergebnisse in der ListBox ausgegeben werden. Durch einen Doppelklick auf ein Element in der Listbox gelangt man in eine weitere Userform, wo weitere Inhalte ausgegeben werden, die von mir bearbeitet und auch gespeichert werden können, so dass die Daten auf dem Tabellenblatt angepasst werden.

Jetzt habe ich mit der Liste etwas herumgespielt und festgestellt, wenn ich in den zu filternden Spalten mehrere unterschiedliche Einträge hinzufüge, dass die Filterungen nicht mehr richtig funktionieren und nicht alle notwendigen/möglichen Filterelemente angezeigt werden. Ich hoffe, dass mir ein findiger Tüftler bei meinem Anliegen helfen kann, so dass die Filterung richtig funktioniert. Ein nettes Gimmick wäre es noch, wenn über einen Button die Filterungen aus der UserForm2 wieder zurückgesetzt werden können und ein Button hinzugefügt wird, wodurch die UserForm geschlossen werden kann.

Hinweis: In der späteren Arbeitsdatei wird es wesentlich mehr Spalten (ca. 60) und auch Zeilen (ca. 5.000) im Tabellenblatt geben.

Zum verdeutlichen ist nachfolgend ein Link zu einer Beispieldatei: https://www.herber.de/bbs/user/172212.xlsm

Viele Grüße
Stefan
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Abhängige Filterung und Speicherung über Userform
16.09.2024 17:08:12
Herbert Grom
Hallo Stefan,

mach aus den Datenspalten "D - F" flexible Bereichsnamen mit dieser Formel im Namensmanager:

=BEREICH.VERSCHIEBEN(TPADATABASE!$D$1;;;VERGLEICH("";TPADATABASE!$D:$D;-1)-1;1) 


Diese Formel ist für die Spalte D. Die Formeln für E & F machst du analog dazu.

Servus
Anzeige
AW: VBA - Abhängige Filterung und Speicherung über Userform
16.09.2024 17:12:05
daniel
Hi Stefan.

leider werde ich aus deiner Beschreibung noch nicht so ganz schlau.
kannst du nochmal erläutern, was man tun muss, um den von dir beschriebenen Fehler zu bekommen und was du dir an dieser Stelle eigentlich wünschst?
beschreibe das bitte so konkret wie möglich anhand deiner Beispieldatei.
momentan weiß ich noch nicht mal, wie ich einsteigen soll. es gibt keinen Button oder ähnliches.
Welche Userform soll ich öffnen? die erste, die zweite? was muss ich dann tun?

Denke bitte daran, dass wir keinerlei Wissen über dein Projekt und deine Aufgabe habe.

Gruß Daniel
Anzeige
AW: VBA - Abhängige Filterung und Speicherung über Userform
16.09.2024 20:50:20
Alwin Weisangler
Hallo Stefan,

anbei den von dir gewünschten abhängigen Filter als ersten Ausbau. Da brauchs keinen Resetbutton mehr.
Dieser sollte auch große Datenmengen akzeptabel flott Filtern können
Das nächste Problem ist die Spaltenzahl bis zu 50 deiner endgültigen Tabelle.
Hier würde ich die Textboxen, welche dann im Userform2 gebraucht werden um Einträge zu ändern oder wie auch immer dynamisch erzeugen und ggf. in einer Klasse verwalten.
Aber da warte ich erst mal deine Rückmeldung ab, ehe ich den Rest zusammenstelle.
https://www.herber.de/bbs/user/172222.xlsm

Gruß Uwe


Anzeige
AW: VBA - Abhängige Filterung und Speicherung über Userform
17.09.2024 12:49:07
Stefan
Hallo zusammen,

zunächst vielen Dank für die zahlreichen Rückmeldungen.

Alwin hat die Filterung in der "UserForm2" bereits perfekt umgesetzt und auch in der eigentlichen Excel-Liste treten keine falsch gefilterten Daten mehr auf. Jetzt ist noch die Verknüpfung zur "UserForm1" offen, wo ich durch Doppelklick auf ein Element aus der "ListBox1" hinspringen kann. Wie bereits in der ursprünglichen Testdatei ersichtlich, müssten die TextBoxen mit den Eintragungen zu dem ausgewählten Element vorbefüllt werden (die relevanten Spalten, die zum Befüllen verwendet werden, liegen nicht zwangsläufig nebeneinander), so dass diese im finalen Schritt bearbeitet und durch einen Klick auf den Button "Save Edits" zurück in das Tabellenblatt "TPADATABASE" geschrieben werden (durch einen Klick auf den Button "Cancel" gelangt man in die "UserForm2" zurück, ohne das die zuvor hinterlegten Eintragungen gespeichert werden). Hier von meiner Seite die Frage, was meinst du genau mit "dynamisch erzeugen und ggf. in einer Klasse verwalten" bzw. wie lässt sich dies in meinem konkreten Fall umsetzen?

Viele Grüße
Stefan
Anzeige
AW: VBA - Abhängige Filterung und Speicherung über Userform
17.09.2024 14:21:41
Alwin Weisangler
Hallo Stefan,

da war noch ein kleiner Fehler drin. Ich hatte ein Array in der 3. Filterstufe vergessen zu dimensionieren. Dies konnte u.U. zu einem Fehler führen.
Ich habe die Userform1 mal entsprechend umgebaut. Es werden, je nach Anzahl der Spalten der Tabelle die Textboxen und die Labels erzeugt.
Änderungen speichern ist auch entsprechend angepasst.
In der Userform2 können in der jeweiligen Filterstufe die Spalten via Konstanten zugewiesen werden.
https://www.herber.de/bbs/user/172243.xlsm

Gruß Uwe


Anzeige
AW: VBA - Abhängige Filterung und Speicherung über Userform
17.09.2024 17:15:44
Alwin Weisangler
Wenn du das Schreiben der Änderungen auslöst wirst du feststellen, dass die Zellen im Textformat beschrieben werden.
Das Füllen des dazu angelegten Arrays erfolgt über eine Schleife.
Um die verschiedenen Formate (Datum/Zahlen/Text) für die betreffenden Zellen der Spalte zuzuordnen muss die Schleife nicht zwingend aufgehoben werden.
Man muss nur beim Durchlauf der Schleife via If / Then den Nummern das entsprechende Format mitgeben.
Da ich den Aufbau deiner Originaltabelle nicht kenne habe ich dies außen vor gelassen.

Gruß Uwe
Anzeige
AW: VBA - Abhängige Filterung und Speicherung über Userform
18.09.2024 18:06:32
Stefan
Hallo Uwe,

nochmals recht herzlichen Dank für deine Programmierkünste :)

Eine Anmerkung hätte ich allerdings noch. Wäre es möglich, dass die in der ListBox1 (UserForm2) ausgegebenen Spalten individuell vorgegeben und ggf. auch im nachhinein leicht angepasst werden können (bspw. die Spalten 12, 5, 9, 6, 7, 13, 22, 23....)? Hintergrund wäre, dass ich von den knapp 60 Spalten nur die ca. 15-20 wichtigsten Spalten in der ListBox1 ausgeben lassen würde (dies dient im wesentlichen der Übersicht), die schlussendlich in die TextBoxen der UserForm1 übertragen und dort zur Bearbeitung inkl. Speicherung zur Verfügung gestellt werden.

Deinen zusätzlichen Hinweis bezüglich des Formates habe ich ebenfalls gelesen und mir reicht es an der Stelle aus, wenn die Werte als Text übergeben werden.

Viele Grüße
Stefan
Anzeige
AW: VBA - Abhängige Filterung und Speicherung über Userform
18.09.2024 22:08:58
Alwin Weisangler
Hallo Stefan,

du schreibst zum Thema Spaltenanordnung der Listbox: "beispielsweise" 12, 5, 9, 6, 7, 13, 22, 23.
Sollen die restlichen Spalten der Tabelle nicht mit in die Listbox?
Die Spalten der Tabelle in der Listbox deinen Vorstellungen anzupassen wäre für 23 Spalten in der Listbox so:


arrtab = Application.Index(arrtab, Evaluate("row(1:" & UBound(arrtab, 1) & ")"), Array(12, 5, 9, 6, 7, 13, 22, 23, 1, 2, 3, 4, 8, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 24, 25))

Da nun die Spalten der Listbox nicht mehr dem Tabellenaufbau entsprechen braucht es dann eine andere Herangehensweise im Userform1.
Lade deine Datei mit vollständigen Tabellenaufbau und ein paar anonymisierten sinnvollen Datensätzen hoch.
Dann bau ich dir den Rest noch ein.
Übrigens: Die Demo, welche du von techcommunity.microsoft.com hier hochgeladen hattest war für dem ursprünglichen Anwendungszweck funktional, aber für mehr leider völlig ungeeignet.

Gruß Uwe


Anzeige
AW: VBA - Abhängige Filterung und Speicherung über Userform
20.09.2024 16:05:50
Stefan
Hallo Uwe,

ich habe deine letzte hochgeladene Datei genommen und dort meinen richtigen Spaltenaufbau eingefügt, wobei ich die Inhalte anonymisiert bzw. umgeschrieben habe. Ich hoffe, dass dies so ausreicht und ich werde deinen Hinweis beachten, dass ich beim nächsten Mal direkt meine vollständige Liste hochlade.

Bezüglich deiner Frage hast du es genau richtig geschrieben, dass in der ListBox1 nur von mir individuell ausgewählte Spalten angezeigt werden sollen bspw. 12, 5, 9, 6, 7, 13, 22, 23 (die restlichen Spalten aus der Excel-Liste können für die Ansicht bzw. die Bearbeitung in den beiden UserFormen vernachlässigt werden). Die Spalten sollen darüber hinaus schnell abgeändert werden können, falls sich die Anforderungen ändern bzw. ich die Datei auf einen anderen Anwendungsfall übertragen will. Und genau die identischen Spalten, die in der ListBox1 angezeigt werden (in unserem Beispiel 12, 5, 9, 6, 7, 13, 22, 23), sollen in der UserForm1 bereitgestellt sowie bearbeitet und schlussendlich auch gespeichert werden können.

Link zur neuen Datei:
https://www.herber.de/forum/messages/1991088.html

Viele Grüße
Stefan
Anzeige
AW: VBA - Abhängige Filterung und Speicherung über Userform
20.09.2024 19:47:16
Alwin Weisangler
Hallo Stefan,

da hast du einen falschen Link eingefügt. Dieser verweist auf deinen Eröffnungsbeitrag.
Da ich aber bis Sonntag nachmittags unterwegs bin und nur noch mit dem Tablett mal reinschauen kann, hab ich die Sache so zusammengeschraubt, dass sich alles mit wenigen Handgriffen anpassen lässt.
Ich hoffe, dass du zumindest damit nun zurechtkommst und die paar Anpassungen an deine Originaldatei selbst hinbekommst.
https://www.herber.de/bbs/user/172321.xlsm

Gruß Uwe
Anzeige
AW: VBA - Abhängige Filterung und Speicherung über Userform
22.09.2024 17:06:45
Stefan
Hallo Uwe,

bis auf den nachfolgend beschriebenen Punkt bekomme ich mit den Anpassungen alles eigenständig hin. Vielen Dank :)

Zum Test hatte ich die in der ListBox1 angezeigten Spalten auf 3 abgeändert, was alles herausragend funktioniert. Anschließend bin ich dann durch einen Doppelklick auf ein Element in der Listbox1 in die UserForm1 gesprungen und hier werden leider alle Spalten aus der Excel-Liste angezeigt. Hier wäre es schön, wenn in der UserForm1 nur die 3 ausgewählten Spalten angezeigt werden würden (also die Spalten, die auch in der ListBox1 ausgegeben werden). Wenn sich dies noch beheben lässt, wäre ich in dieser Thematik wunschlos glücklich.

Viele Grüße
Stefan

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige