Herbers Excel-Forum - das Archiv

Combobox und USER-form ausfüllen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Combobox und USER-form ausfüllen
von: Ronny

Geschrieben am: 14.12.2006 13:29:19
Hallo Excel-VBA-Profis,
Habe eine USER-Form gebastelt, die Schritt für Schritt bestimmte Dinge abrbeiten soll, dabei habe ich Schritt 1 bereits fertig hinterlegt und die andern Schritte bereits in form dargestellt in meiner Bsp.-Datei:

Die Datei https://www.herber.de/bbs/user/38995.xls wurde aus Datenschutzgründen gelöscht

Ich würde gerne immer erst den nächsten Schritt einblenden, wenn der vorherige positiv abgearbeitet wurde, hab gehört dies geht mit visible.true oder so? Außerdem würde es sinn machen eine Fehlermeldung einzubauen die den Benutzer bei Schritt 3 nicht a) und b) auswählen lässt, sondern nur eins von beiden, bzw. sobald eins ausgewählt ist, das andere nicht mehr selektierbar ist. Er dies mit einem Zurücksetzen Button aber wieder zurücksetzen kann, falls er doch lieber b) auswählen möchte.
Wichtig ist beim füllen der Comboboxen (immer automatisch nach StromNr. Eingabe bzw. vielleicht noch eine Bestätigungsmöglichkeit einbauen bei Schritt 2, wo der Benutzer ja oder nein wählen kann, bevor das zeitaufwendige füllen gestartet wird), dass immer nur die Werte eingetragen werden sollen die zur jeweiligen StromNr. gehören und bei
a) immer die Spalte gemeint ist in der die StromNr. auch drin steht
b) immer die Spalte gemeint ist die rechts neben a) liegt
Bsp.:
Schritt 1: stromNr. 1 wurde eingeben und gefunden
---dann
Schritt 2: Ausfüllen mit Infos
Klartext = C1
Parameter = C3
Dimension = C4
KKS = C5
---ja oder nein, bei ja schritt 3 und bei nein Schritt 1
Schritt 3: dann Combobox a) füllen mit C7:C12 und Combobox b) mit D7:D12 sobald ein Wert aus einer der beiden Boxen dann ausgewählt wird, muss im Ergebnisfeld immer das Datum oder der MW stehen aus den Bereich $B$7:$B$12!
Zusätzlich müssen hier die Grenzen eingetragen werden
KWMAX d.h. > = D3
KWMIN d.h. <= = D5
Ergebnis = je der zugehörige Wert aus Spalte B der bei a) oder b) ausgewählt wurde, als Bsp soll hier nun bei a) 369,0069552 ausgewählt werden, dann muss im Ergebnisfeld = 03.01.2006 stehen
--- Ergebnis (Datum oder MW) steht im Ergebnisfeld
Schritt 4: den Wert des Ergebnisses hier nun in der Tabelle "REA Messwerte" im Feld K4 auswählen (ist über Name, Definieren als List eingetragen in Orginaldatei und beinhaltet halt B7:B12 und wenn sich das Feld ändert, dann ändern sich auch alle Pivotberichte auf das Datum was in dem Feld steht)
--- alle Pivotebrichte stellen sich nun auf den 03.01.2006 ein, da dieser Wert im Feld K4 der "REA Messwerte" Tabelle eingetragen wurde
(dazu nur am Rande erwähnt:
1) Das Feld K4 in der Tabelle "REA Messwerte" ist über Daten-Gültigkeit mit einer Liste "ListeDatum" verknüpft
2) Die ListDatum bezieht sich auf den Datumsbereich der ersten Detailtabelle "TWmw 1-126" Spalte B7:B12
3) Zum Code:
Es wird nur folgendes durchgeführt, wenn ins K4 ein Wechsel stattfindet:
a) Es werden alle Tabellenblätter der Mappe überprüft und wenn Name mit "TWmw" anfängt
b) Wird die Zelle D19 (Das ist die Datum-Auswahl-Zelle der Pivottabelle) mit dem Datumswert der in 1) ausgewählt wurde überschrieben und somit 'angepasst'.
Der Left-Befehl macht das Datum zu einem String (ohne die Sekunden), d.h. genau so, wie er in der Pivotauswahl auftaucht.)
Alle blauen und grünen Felder sind Ausgabefelder! Aber schaut doch bitte einfach mal in die Datei dann sieht ihr schon was ich meine.
Hoffe ihr könnt mir helfen??? Freue mich über jede Hilfe, da ich in VBA nur geringe Kenntnisse habe, bzw. noch lerne diese zu entwickeln, d.h. über Kommentare im code bin auch sehr dankbar! ^^
Gruß,
Ronny
Bild

Betrifft: AW: Combobox und USER-form ausfüllen
von: fcs

Geschrieben am: 14.12.2006 19:08:13
Hallo Ronny,
ich mir dein Formular mal vorgenommen.
Ein paar Buttons hab ich ergänzt und die meisten Steuerungseelemente zwecks besserer Lesbarleit des Codes umbenannt.
Die beiden Komboboxen bei den Optionen A und B hab ich jetzt 2-spaltig aufgebaut es werden immer Wert und Datum angezeigt.
Statt die noch nicht benötigten Elemente sichtbar/unsichtbar zu schalten, hab ich die jeweiligen Steuerelemente aktiv/inaktiv geschaltet. Das schien mir in diesem Formular sinnvoller.
https://www.herber.de/bbs/user/39006.xls
Gruss
Franz
Bild

Betrifft: AW: Combobox und USER-form ausfüllen
von: Ronny

Geschrieben am: 15.12.2006 09:55:59
Hi Franz,
Spitzen Lösung! Funktioniert super bei mir und ich musste nur geringfüge Änderungen vornehmen um es an meine große Datei anzupassen.
4 Dinge die mir noch auffielen im Nachhinein, bzw. welche ich gern noch überarbeiten würde mit deiner kompetenten hilfe hoffe ich ^^:
1. Die Daten die in b) stehen müssen in a) und umgekehrt (habe ich angepasst)
2. (Beachten also jetzt Daten von a) in b) und umgekehrt) Die Daten bei a) sind wenn sie nicht innerhalb der Grenzen liegen durch eine WENN-Formel immer mit "" als Leer hinterlegt, daher ergeben sich dann Leerwerte in der Combobox bei zugehörigen Datum. An dieser Stelle würde ich gern genau diese Werte samt Datum in der Combobox aussparen bzw. nicht als Auswahl anzeigen lassen, da es hier gerade darum geht den Benutzer nur logische Wert anzubieten die innerhalb der Grenzen liegen!
3. Das anzeigen vom Datum finde ich sehr hilfreich wenn man einen bestimmten Bereich untersuchen will, jedoch wird man meist bei der Hauptgröße nach einer bestimmten Größenordnung ausschau halten z.B. möchte man gern den Wert 5 wissen und muss nun scrollen bis man ihn gefunden hat (bei 379 Zeilen ein mühseliges suchen).
3.1 Könnte man hier vielleicht eine aufsteigende Sortiermöglichkeit der Messwerte einrichten? welche halt standardmäßig für die Comboboxen eingestellt ist und das Datum ganz aus der Combobox lassen (siehe 3.2)
3.2 Das Datum würde sich besser eignen als Zeitbereich den man definiert für seine Untersuchung in seperater Form, d.h. man hat 2 Felder in denen am besten der Anfang und das Ende für den Zeitbereich hinterlegt sind (standardmäßig immer mit den jetzigen möglichen Ende, d.h. ich habe MessWerte[in Tagesmittelwerten] vom 01.01.-31.12.2006 in meiner Datenquelle hinterlegt, jedoch ist heute z.B. der 15.12.06, also alle Daten vom 15.12-31.12.2006 sind noch nicht verfügbar und somit nicht als Anzeigebereich logisch und sollen dem Benutzer auch nicht zur Verfügung stehen bei seiner Auswahl!)
Absolut genial wäre ein Kalender von 2006 wo immer nur die Tage bzw. Monate angezeigt werden welche bereits möglich waren, also wieder heute als Bsp, alle Tage bis zum 14.12.06, und dieser Kalender dann einmal als Auswahlfeld "Zeitbereich VON" und einmal als Auswahlfeld "Zeitbereich BIS" definieren, welchen man durchsuchen möchte. Dies würde den Benutzer die Möglichkeit geben sehr einfach durch seine Zeitbereichauswahl alle nur bestimmte Werte zu Untersuchen. Wichtig ist hier wieder, dass alle Werte aufsteigend geordnet sind in der Combobox!
Problem ist nur, dass die Mittelwerte MW nicht im Kalender stehen können und man dafür ein Extrafeld schaffen müsste um diese auszuwählen, wieder mit Option wie bei a) und b), da man ja entweder einen Zeitbereich durchsuchen will oder einen MW des Monats wählen möchte.
Die Mittelwertebezeichennugen stehen bei in den Feldern B372-B384:
MW-Jahr = B372
MW-Monat 01-Jan
MW-Monat 02-Feb
MW-Monat 03-Mrz
MW-Monat 04-Apr
MW-Monat 05-Mai
MW-Monat 06-Jun
MW-Monat 07-Jul
MW-Monat 08-Aug
MW-Monat 09-Sep
MW-Monat 10-Okt
MW-Monat 11-Nov
MW-Monat 12-Dez = B384
und die dazugehröigen Werten stehen immer in der selben Spalte wo b) seine Werte rausliest
4. Mir ist aufgefallen, dass eine Fehlermeldung kommt, wenn man keine Werte bei einer Messung hat und diese als Hauptgröße definieren will. Dies ist zwar ok, da dies eine unsinnige Hauptgröße wäre, aber die Fehlermeldung sollte erst kommen wenn man auf den Button weiter klickt und nicht als Laufzeitfehler, sondern als CriticalFehlermeldung, welche einen sagt: "Zur angegebenen StromNr. bzw. Hauptgröße existieren keine Messwerte! Bitte wählen sie eine andere Hauptgröße aus. Danke."
Das wäre schon alles, NOCHMALS Danke für deine Hilfe, du hast mir schon sehr weitergeholfen und ich hoffe auch noch die letzten Änderungen einbauen zu können, um die Userform Fehlersicher und logisch gestalten zu können ^^ Hoffe du hast nochmal kurz Zeit mir Hilfestellung zu geben ^^
Gruß,
Ronny
Bild

Betrifft: AW: Combobox und USER-form ausfüllen
von: fcs

Geschrieben am: 15.12.2006 12:02:22
Hallo Ronny,
4 Dinge die dir noch auffielen im Nachhinein, bzw. welche du gern noch überarbeiten würdest.
zu 1. immer gut wenn schon was fertig ist
zu 2. Es ist kein Problem beim Füllen der Auswahlliste mit Daten die Zeilen mit Leerstring zu überspringen. Hierzu muss "nur" in der Teilprozedur, die die Liste mit Daten füllt, eine entsprechende If-Bedingung eingebaut werden.
zu 3. hier ist wahrscheinlich die optimale Lösung eine Optionsauswahl Zeitfenster (Datumssortiert) oder Messwerte-Sortiert die optimale Lösung.
zu 3.1 Sortieren ist kein Problem, habe aber selbst keine gute Sortierroutine verfügbar. Hier im Forum wird man da aber sicher fündig.
Datum weglassen ist einfach, dazu muss nur die Eigenschaft columnscount der Auswahlbox auf 1 gesetzt werden.
zu 3.2 Abhängig vom unter 3. erwähnten Optionsschalter kann man dann entsprechende Eingabefelder vorbereiten und dannach dann die Auswahlliste in der Kombinationsbox aufbereiten. Allerdings müssen dann die Teilprozeduren für das Füllen der Auswahllisten im Code anders plaziert werden. Zur Zeit werden sie mit der Auswahl der Stromnummer oder mit dem weiter-button produziert.
Es gibt für Excel Kalendertools, allerdings hab ich mich bisher nicht mit der Integeration solch eines Tools in eigene Prozeduren beschäfftigt. Ich denke dass man hier mit einfachen Eingabefeldern/Auswahllisten auskommt.
Die Mittelwertsbezeichnungen kann man immer am Ende der Auswahlliste anfügen. Beim Einlesen der Listendaten wird nach erreichen des aktuellen/eingestellten Datums dann immer ein Sprung in die Zeile 372 gemacht, um die MW-Daten einzulesen. ggf. muss man hier noch was arbeiten, wenn die Auswahlliste nach den Messwerten sortiert werden soll. Wahrscheinlich wird es am einfachsten diese Daten nach dem Sortieren als zusätzliche Items zur Auswahlliste hinzuzufügen.
zu 4. Diese Fehlermeldung kann ich noch nicht nachvollziehen. Möglicherweise hängt es mit dem Erstellen der Auswahllisten für die Comboboxen zusammen, die zur Zeit schon erstellt werden, bevor man auf den weiter-Button klickt.
Was steht denn in den Zellen drin, wenn keine Messwerte vorhanden sind? ggf. verschwindet dieses Problem ja, wenn die Zeilen ohne Messwerte nicht in die Auswahllisten übernommen werden.
Ich werde heute Abend oder morgen früh mal schauen, wie ich das Userform bzw. einzelne Prozeduren anpasse.
Gruß
Franz
Bild

Betrifft: AW: Combobox und USER-form ausfüllen
von: Ronny

Geschrieben am: 15.12.2006 13:34:05
Hi Franz,
naja hört sich immer alles so einfach an wenn du dass so hinschreibst, aber immer wenn ich vorm VBA Code sitze, weis ich dann nicht genau wo ich ansetzen muss und verbringe Stunden mit probieren ^^ Aber ich setze mich definitiv damit auseinander und lerne stets dazu und möchte mich deswegen auch nochmal bedanken für deine Hilfe an dieser Stelle!
Wegen 4. sei noch gesagt, dass das Problem sich vielleicht nicht löst wenn die Werte, die nicht existieren nicht mehr in a) drin stehen, da ja b) noch nicht gelöst ist damit. Denn ich hole die Daten immer über ein Addin von einem Server ab und muss dazu ein Array in die Spalte einbauen was vom 01.01-31.12.2006 (Zeile 7 bis 371) immer die Tagesmittelwerte abruft. Naja und wenn der Server keine Werte kennt, weil es den Tag noch nicht gegeben hat oder zu der Zeit keine Messwerte aufgezeichnet wurden (Server down oder kein archiv angelegt war), dann trägt er den Messwert "0" ein. Dies bedeutet, dass ich in der ersten spalte, aus der b) seine werte zieht (also alle Werte), immer kein Spielraum habe bzw. dort nie "" drin stehen kann. Jedoch ist 0 ja ein Wert und dies dürfte dann zu keinen Problem führen oder?
Dass mit den Kalender hab ich übrigens in der Datei hier https://www.herber.de/bbs/user/39027.xls gesehen und fand es ziemlich praktisch. Nur dass der Kalender den ich benötigen würde halt nur die Tage anzeigen darf die es im aktuellen Jahr schon gegeben hat -1 (den aktuellen halt immer abrechnen wegen Tagesmittelwert, der erst am Ende des aktuellen Tag gebildet werden kann). Oder man würde ihn so definieren, dass er diese anstatt nicht anzuzeigen doch anzeigt aber sie nicht auswählbar sind bzw. gesperrt für den Benutzer. Kennt sich denn wer mit solchen Kalendern hier im Forum aus?
Freue mich schon auf deine abgeänderte USER-Form, da meine Versuche leider noch nicht fruchten =(
Gruß,
Ronny
Bild

Betrifft: AW: Combobox und USER-form ausfüllen
von: fcs

Geschrieben am: 16.12.2006 08:22:55
Hi Ronny,
nach reichlich Feinarbeiten an fast allen Prozeduren und den Ergänzungen im Userform für Auswahl Messwert sortieren oder Zeitfenster (inklusive Datumsauswahl über Comboboxen) klappt es jetzt nach meinem Verständnis reibungslos. Den Kalender aus der anderen Datei konnte ich nicht einbauen. Er erfordert entweder ein besonderes Addin oder einen Controls-Typ Calender, den ich in Excel97 nicht zur Verfügung hab. Ich denke aber, dass meine Lösung mit den Kombinationsauswahlboxen fast genauso komfortabel zu bedienen ist.
Leider hatte ich auch mit Excelabstürzen zu kämpfen. Diese verschwanden erst nachdem ich die Prozedur für die Suche der Strom-Nr. so geändert hab, dass die Eingabe zunächst auf nummerisch geprüft wird. Falls nicht nummerisch, dann wird auf PE-Nr. geprüft. So werden auch die Stoffströme ohne Variablentyp-Fehler gefunden, die mit PE nummeriert sind.
Das Modul "CombiBoxAuswahlSortieren" muss du komplett in deine Originaldatei übernehmen. War ein Glückfall, dass gestern jemand die Frage nach dem Sortieren der Liste in einer Auswahlliste stellte und Heiko S. eine Super-Lösung ausgegraben hat ( https://www.herber.de/forum/messages/829752.html ). So brauchte ich nicht in den Tiefen des Archivs nach einer Lösung suchen.
https://www.herber.de/bbs/user/39038.xls
Gruss
Franz
Bild

Betrifft: AW: Combobox und USER-form ausfüllen
von: Ronny

Geschrieben am: 28.12.2006 10:12:28
Hallo Franz,
war die Woche vor Weihnahcten krank und an den PC zu gehen, daran war nicht mal zu denken so übel gings mir. Nun kam noch Weihnachten dazwichen und ich habe mich wieder gut erholt. Also bitte entschuldige dass ich mich erst jetzt hier melde! Bin dir wie immer sehr dankbar für deine liebe Hilfe und habe mir deine Lösung angeschaut und finde sie auf den ersten Blick auch sehr konfortabel, so dass man auf das Kalendertool getrost verzichten kann. Allerdings muss ich das ganze erst am 02.01.2007 in der Firma testen, um sicher zu gehen, dass alles funktioniert.
Eine Kleinigkeit fiel mir noch im nachhinein zu Hause auf:
Wenn man eine PE Nr. eingibt, dann steht statt einer "KKS" immer der "Probenehmer" da, wie z.B. Infra oder Labor. Dies übernimmt das Programm zwar richtig in die Userform, jedoch müßte immer wenn eine PE Nr. eingegeben wird halt statt der Bezeichnung "KKS" die Bezeichnung "Probenehmer" vor den Ausgabefeld stehen. Wenn ich in der Firma bin werde ich mal schaun ob ichs mit einer IF-Anweisung hinbekomme ^^
Also Franz nochmal vielen vielen DANK für deine Mühe, du hast mir sehr weiter geholfen!
Gruß,
Ronny
Bild

Betrifft: AW: Combobox und USER-form ausfüllen
von: Ronny

Geschrieben am: 02.01.2007 15:36:36
Hallo Franz,
wünsch dir ein gesundes neues JAHR 2007!
Hab deine Lösung auf Arbeit an meine Datei angepasst und zusätzlich die If-Funktion geschrieben falls keine KKS und stattdessen der Probenehmer angegeben wird (was ich in der vorherigen Nachricht schon beschrieben hatte).
Danke nochmal für die super Lösung für mein Problem, hab durch dich viel gelernt was VBA und Co angeht!
Ein einziges Problem bleibt leider noch,
----------------------------------------
und zwar soll in der USER Form bei der Zeitfenstereinstellung immer nur ein bestimmtes Jahr verfügbar sein und nicht 4 Jahre zurück wie bei deiner Lösung derzeit. Da in der Excel-Datei aus Speichergründen nicht mehr als 1 Jahr abgelegt werden kann und somit immer nur ein Jahr für das Zeitfenster interessant ist!
D.h. die aktuelle Lösung macht zur Zeit richtig, dass man nur die Tage im Zeitfenster auswählen kann die bereits gelaufen sind - aktuellen Tag(Vergangenheit), aber es zeigt den Benutzer ein zu großes Zeitfenster, da dieser nur bei der Datei 2006 eben nur den Zeitraum 01.01.-31.12.2006 als Einstellmöglichkeit haben darf! Für die neue Datei 2007 müßte dann halt wieder nur das Jahr 2007 zur Verfügung stehen, außer die Tage die natürlich noch nicht erreicht sind (Zukunft) und den aktuellen (wegen Mittelwert am Ende des Tages).
Ich hoffe du hast nochmal eine gute Idee für mich parat und ich habe mich nicht allzu schwierig ausgedrückt ^^
Freue mich auf eine Antwort von dir oder jemand anders, der sich mit sowas auskennt?
Gruß,
Ronny
 Bild
Excel-Beispiele zum Thema "Combobox und USER-form ausfüllen"
ComboBox als Symbol Alle ComboBoxes auf Position 1
Werte in eine ComboBox einer UserForm übernehmen ComboBox in Abhängigkeit einer 2. ComboBox ein-/ausblenden
ComboBox mit Monatsnamen füllen Mehrspaltige ComboBox
ComboBox2 in Abhängigkeit von ComboBox1 bestücken Nur Zellen mit Inhalt in ComboBox listen
Neue UserForm bedingt nach ComboBox-Auswahl aufrufen Neues Element in ComboBox