18.03.2021, 22:17 (Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2021, 22:21 von Royalty.)
Hallo zusammen,
ich versuche mich seit einigen Tagen mal mit Makro und VBA-Programmierung in Zusammenhang mit Excel. Dabei komme ich mit Excel sehr gut zurecht, bin aber im Bereich VBA absoluter Neuling und arbeite mich so ganz langsam in das Thema ein.
Mein jetziges Projekt besteht aus einer Tabelle, in der ich für verschiedene Themenbereiche, die sich auch teilweise überschneiden Informationen sammeln muss, die ich dann später über eine "Such-" oder "Filterfunktion" soweit einschränken kann, dass ggf. einige wichtige Detailfragen leicht gefunden werden.
Die Tabelle soll letztendlcih von ca. 20 Mitarbeiteren verwendet werden, die neben Dateneingabe insbesondere eine gute Filterfunktion bekommen sollen, wobei sich die zu filternden Daten auf 11 Spalten aufteilen. Um die Dateneingabe dann zu vereinfachen bzw. vorzugeben, habe ich nun ein Userform zur Dateneingabe entwickelt, so dass die Daten gem. meinen Vorgaben von allen anderen auch vorgenommen werden können. Die Dateneingabe wird dabei in vielen Feldern fest vorgegeben und nur in 3 Punkten sind "Texteingaben" frei möglich.
Das befüllen der Tabelle ist somit sicher und problemlos.
Allerdings finde ich jetzt keine Möglichkeit, die Daten entsprechend zu filtern und ggf. auszugeben bzw. zu drucken.
Die Idee war eigentlich, dass ich das Userform nicht nur für die "Dateneingabe" sonder auch als "Suchfunktion" werden kann.
Das Userform ist zusätzlich mit 3 Buttons "Daten speichern", "abbrechen" und "suchen" versehen, wobei die ersten beiden Button jetzt auch das tun, was sie tun sollen. Lediglich der "Suchbutton" ist noch ohne funktion.
Je nach aufwand würde ich auch ein neues Userform für die Suche erstellen, wobei es wichtig ist, dass die Suche "über eine Userform" durchgeführt wird. Die "einfache" Filterfunktion über Excel soll nicht verwendet werden und die Tabellenblätter mit den Datensätzen soll versteckt werden. Also Eingabe und Suche letzendlich über ein Userform. Ich habe viele "Suchfunktionsmöglichkeiten" im Internet über Google gefunden, aber über ein Userform leider nicht.
In meinem Userform sind übrigens 5 Listboxen, 5 Textboxen und 32 Checkboxen in Verwendung.
Ich würde mich freuen, wenn jemand eine detaillierte Beschreibung oder ein Youtubevideo mitteilen kann, wo erklärt wird, wie ein Userform auch für Suchfunktion genutzt werden kann. Ein Screenshot konnte ich hier leider irgendwie nicht hoch laden.
Gruß und danke im Voraus Hab jetzt gesehen, wie ich den Screenshot anhängen kann.
offen und ehrlich, deine Ausführungen sind sehr lang, aber ScreenShots helfen uns überhaupt nicht weiter. Lade lieber eine anonyme Beispieldatei hoch, es können ruhig Fantasiedaten sein. Damit erfassen wir die gesamte Aufgabe mit einem Blick. Am besten mit den Makros die du bereits entwickelt hast. Die müssen nicht professionell sein.
Die Daten sind nicht geheim und daher hab ich auch kein Problem, die Beispieldatei anzuhängen. Wie gesagt, ist bisher nix wildes. Ich möchte nur die Daten, die jetzt in der Tabelle abgelegt werden, über ein Userform filtern, so dass ich daten zu bestimmten Förderprogrammen gefilitert bekomme. Es soll eine "Informationssammlung" werden, die später durchsucht werden kann, um Vorgaben und Information leichter zu finden.
(18.03.2021, 22:17)Royalty schrieb: Dabei komme ich mit Excel sehr gut zurecht, bin aber im Bereich VBA absoluter Neuling und arbeite mich so ganz langsam in das Thema ein.
Ich will dich nicht abschrecken aber du bist noch 50 km vor der Startlinie.
(18.03.2021, 22:17)Royalty schrieb: Die "einfache" Filterfunktion über Excel soll nicht verwendet werden und die Tabellenblätter mit den Datensätzen soll versteckt werden. Also Eingabe und Suche letzendlich über ein Userform.
Wieso? Weshalb? Warum?
(18.03.2021, 22:17)Royalty schrieb: Das befüllen der Tabelle ist somit sicher und problemlos. ... In meinem Userform sind übrigens 5 Listboxen, 5 Textboxen und 32 Checkboxen in Verwendung.
In der Tabelle gibt es das Feld "Regelungsdatum", in der Userform nicht. Ich kann in der Userform im Feld "Datum der Aufhebung" als Datum 35.13.125 eingeben und speichern. Also völlig sicher und problemlos.
Wir sehen uns! ... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
19.03.2021, 07:38 (Dieser Beitrag wurde zuletzt bearbeitet: 19.03.2021, 08:04 von RPP63.)
Moin!
(19.03.2021, 00:37)shift-del schrieb: Ich will dich nicht abschrecken
Ich schon!
Royalty schrieb:ich versuche mich seit einigen Tagen mal mit Makro und VBA-Programmierung in Zusammenhang mit Excel. Dabei komme ich mit Excel sehr gut zurecht, bin aber im Bereich VBA absoluter Neuling und arbeite mich so ganz langsam in das Thema ein.
Wie stellst Du Dir den weiteren Ablauf vor? Ein UserForm (so wie Du Dir das vorstellst) ist für einen VBA-Anfänger absolut ungeeignet! Wenn ich die Lösung erstellen würde, bräuchte ich dafür etliche Stunden (intensives Debugging [siehe z.B. die angesprochene Datumsproblematik] inkludiert). Dir das zu erklären, würde einige Stunden Frontalunterricht erfordern. Bis Du das dann selbständig umsetzen könntest, würden etliche Wochen vergehen.
Konklusio: Wenn Du (wie Du anmerkst) mit Excel sehr gut zurecht kommst, dann erstelle erst mal eine Tabelle, die auch ein unbedarfter Benutzer unfallfrei bedienen kann. Dazu gehören bspw. Zelldropdowns mit Datengültigkeit, Liste, sowie Verhinderung sämtlicher Falscheingaben.
Eine Auswertung erfolgt dann auf einem separaten Tabellenblatt, auf dem Du Dir mit den bekannten Verweis-Funktionen ein Dashboard anzeigen lassen kannst. Da Du bereits Excel 365 hast, solltest Du parallel auch die entsprechenden dynamischen Funktionen wie FILTER(), SORTIEREN() u.ä. nutzen. Gruß Ralf Übrigens auch hier: https://www.ms-office-forum.net/forum/sh...p?t=373784
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
(19.03.2021, 07:38)RPP63 schrieb: Wie stellst Du Dir den weiteren Ablauf vor? Ein UserForm (so wie Du Dir das vorstellst) ist für einen VBA-Anfänger absolut ungeeignet! Wenn ich die Lösung erstellen würde, bräuchte ich dafür etliche Stunden (intensives Debugging [siehe z.B. die angesprochene Datumsproblematik] inkludiert). Dir das zu erklären, würde einige Stunden Frontalunterricht erfordern. Bis Du das dann selbständig umsetzen könntest, würden etliche Wochen vergehen.
1. Es geht hier nicht darum, dass ich das in einer bestimmten Zeit umsetzen muß, sondern es ist das Ziel, dass ich lerne, wie ich genau dahin komme. Mir ist bewußt, dass ich einige Zeit benötigt und das ich mich auch weiter einarbeiten muß. 2. Ich bin immer davon ausgegangen, dass man in einem Forum Hilfe bekommt. Statt Hilfestellung zu geben, wird mein Vorhaben hier auseinander gepflückt, wobei mir das mit der Datenformatierung durchaus klar war. Meine Anmerkung oben, mit "läuft problemlos" war auf die Übernahme der Daten vom Userform in die Tabelle bezogen. Das ich da noch Formatierungen vorgeben muß, ist mir bewußt.
Wie ich schon gesagt habe, möchte ich die Tabelle so umsetzen, wie ich es mir vorgestellt habe. Natürlich gibt es einen einfachen weg über einer normale filterbar Tabelle! Aber ich möchte es halt über ein Userform machen und da erübrigt sich jede Diskussion. Wenn man also nicht helfen möchte, kann man auch einfach den Threat ohne Kommentar schließen und gut ist.
3. Ich erwarte auch nicht, dass mir jemand den vollständigen Code vorgibt! Nur eine Anregung, auf welche Richtung (Befehle) ich einschlagen soll. Denn Rest lern ich schon
Mal schauen, ob noch konstruktivere Beiträge zu meinem Vorhaben kommen. Gruß Royalty
in einem Forum hast Du mit den verschiedensten Charakteren zu tun die dir jeweils auf eigene Art und Weise versuchen, etwas rüber zu bringen Ich würde Dir auch empfehlen, nicht gleich alles in Deinem Projekt umzusetzen zu versuchen.
Nimm doch einfach eine kleine Tabelle, 3 Spalten, 5 Zeilen, und probiere bisschen was aus. Wenn ich den bisherigen Code anschaue, dann könntest Du z.B. ausprobieren, wie man die Steuerelemente in Schleifen anspricht - was einige Passagen auf 3 Zeilen Code einkürzen könnte. Das könntest Du dann in eine "Beispielsammlung" aufnehmen.
Wenn Du später das Ergebnis drucken willst, wirst Du wohl eher ein Blatt benötigen. Diesem sichtbaren Blatt ist es dann aber egal, ob auf den anderen Blättern was gefiltert ist oder ob Du die Daten dort abgegriffen und auf das sichtbare Blatt eingefügt hast.
Wenn Du etwas suchst, könntest Du den Makrorekorder laufen lassen. Der erzeugt Dir einen code, in dem Du auch den Suchbegriff siehst. Du müsstest schauen, wie Du dafür z.B. den Text einer Textbox nutzen kannst oder den Wahrheitswert einer Checkbox ...
Die Trefferzeile gehst Du dann durch und schaust nach den anderen "Filterkriterien". Ob Du dabei FIND nutzt oder Schleifen sei mal dahin gestellt. Wenn alles passt, kopierst Du die Daten auf Dein Ausdruckblatt, druckst und löschst anschließend die Daten.
Du siehst, ich habe 2x Schleife aufgeführt. Du musst dich also auch mit der Thematik beschäftigen.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Zitat:Statt Hilfestellung zu geben, wird mein Vorhaben hier auseinander gepflückt,
Ralfs Antwort würde ich durchaus als Hilfestellung verstehen. Er möchte dich davor bewahren, viel Arbeit und damit Zeit in ein Projekt zu stecken, mit dem du aller Voraussicht nach scheitern wirst. Die Haltung: rate mir, aber rate mir nicht ab, ist also nicht angebracht.
Viele Grüße Klaus-Dieter Der Erfolg hat viele Väter, der Misserfolg ist ein Waisenkind Richard Cobden
So, ich habe einen Beispielcode bekommen, den ich mir gerade anschaue. Einiges habe ich nachvollziehen können, was ich nun auch schonmal in meine Tabelle eingebaut habe. https://www.ms-office-forum.net/forum/sh...p?t=334431
Aufgrund des Beispiels habe ich mich nun auch dazu entschieden, die Tabelle mit einem Extraformular für die Suche zu versehen, was ich auch schon eingebaut habe. Somit habe ich ein Formular für die Dateneingabe und eines für die Suche, die ebenfalls schon über die Tabelle aufgerufen werden können. Dann habe ich die Tabelle etwas erweitert, so das viele Abfragen mit "ja" oder "nein" (bzw. leer) beantwortet werden können, was die Abfrage entwas erleichtern dürfte. Ich habe auch darauf geachtet, dass die Eingaben zu 100 % mit der Abfrage übereinstimmen.
Jetzt stehe ich aber vor der Entscheidung, wie ich das Suchergebnis nun ausgeben soll. Anfänglich habe ich gedacht, dass ich das auf ein separates Tabellenblatt ausgebe (daher auch das Worksheet "Filterblatt"). Das oben gelistete Beispiel macht ja genau das, was ich ursprünglich wollte.
Als ich nun aber das "Suchformular" aufgesetzt habe, ist mir aber aufgefallen, dass ich als Ergebnis ja nur 2 Spalteninformationen ausgeben möchte und zwar die Treffer aus Spalte AN "Regelung (Detail/Volltext)" und Spalte AP "Anmerkung/Hinweis".
Ich habe aufgrund einiger Anmerkungen die Tabelle weiter bearbeitet und alles soweit mal eingebaut und auch beschriftet sowie kommentiert, um die Nachvollziehbarkeit sicherzustellen. Die überarbeitete Datei habe ich mal als Anlage beigefügt.
Die Frage ist nun, ob es einfacher ist, die Suchergebnisse auf ein separates Filterblatt (wie ursprünglich geplant) auszugeben oder ggf. im Suchformular oder eine andere Ausgabeart?
20.03.2021, 08:03 (Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2021, 08:05 von Royalty.)
Ich bin schon um einiges weiter gekommen. Einige Informationen können bereits über einen Autofilter gefiltert und in ein separates Filterblatt ausgegeben werden. Detailinfos habe ich unter folgendem Link gepostet: https://www.ms-office-forum.net/forum/sh...ost2025273
Vor ein Problem stellen mich nun die Combobox2 und Combobox3. Für Cobobox2 habe ich nun folgende Codezeilen verwendet:
werden alle Abfragen nicht mehr richtig durchgeführt und es wird nichts mehr oder nur fehlerhaftes in das Filterblatt übertragen.
Der aktuelle Stand der Datei habe ich wieder angehängt.
Ich weiß jetzt nicht, warum Excel so reagiert. Einen Fehler kann ich so jetzt nicht erkennen. Gibt es vielleicht Begrenzungen innerhalb des Codes, die ich jetzt nicht beachtet hab (z.B. die Menge der If-Then-Abfragen).