Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Steuerelemente





Frage

Hallo Leute. Ich habe folgendes Problem: Ich habe eine Exceldatei erstellt mit mehreren Arbeitsblätter. Auf diesen habe ich sehr viel mit CheckButtons gearbeitet und ihnen Makros zugewiesen. Mein Problem ist, dass viele dieser Buttons nach erfolgtem Speichern und erneutem laden der Datei nicht mehr funktionieren. Die Makros sind noch zugewiesen, das erkennt man im Entwurfsmodus. Nur wenn man auf die Buttons klickt tut sich nichts. Hat jemand Erfahrungen diesbezüglich gesammelt und kann mir weiterhelfen? Vielen Dank

Antwort 1 von fürLau

Hallo

Zunächst einmal - es gibt CheckBoxes (Kontrollkästchen), OptionButtons (Optionsfelder) und CommandButtons (Schaltfläche, Befehlsschaltfläche, Umschaltfläche), und davon auch noch unterschiedlche - CheckButtons wären mir neu.

Gruß[h3]{[h1]Ó¤[sup...fürLau

Antwort 2 von Mahatmanix

CommandButtons meinte ich, ich bitte um Entschuldigung ;-)

Mir fällt es schwer die Datei zu beschreiben, hatte gehofft, dass dies ein möglicherweise bekanntes Problem ist.

Auf dem ersten Registerblatt habe ich eine ganze Menge Commandbuttons, die per klick autofliter in einem anderen Register ausführen, bzw. per doppelklick diese beenden.

Mit einer menge Commandbuttons meine ich ca. 100 auf diesem Registerblatt ;-)

Ich muß zu diesem Zweck immer 2 Fenster offen haben, eines mit dem Registerblatt mit den filtern und eines mit dem Registerblatt der autogefilterten seite, damit man auch sieht, was man denn da nun gefiltert hat.
Sinn hinter der ganzen geschichte ist einfach eine benutzerfreundliche Filterführung per button.

Um auf die anderen weiteren Register zu wechseln, die sich auch noch in der datei befinden, wollte ich dann eine Navigationsleiste per commandbuttons einbauen. Hinter diese lege ich dann makros, die dafür sorgen, dass sich ein fenster wieder schließt und das andere sich maximiert, da ich ja vorher, wie oben beschrieben, 2 geöffnet hatte.

Hoffe das arbeitsblatt wurde einigermaßen verständlich ;-)

Fakt ist nur der:
Beim erstmaligen einsetzen der Commandbuttons funktioniert die datei. Sobald ich gespeichert und neu geladen habe, reagieren die commandbuttons auf den Navigationsleisten der weiteren registerblätter nicht mehr.
Es ist allerdings auch schon vorgekommen, dass diese noch funktionsfähig waren, dafür dann aber meine 100 autofliter commandbuttons nicht mehr funktionierten.
Die makros sind alle noch hinterlegt, ich habe auch schon mit den eigenschaften der Steuerelemente rumgespielt, sprich locked auf true und false etc. ohne wirklichen erfolg

Kann es bei Excel diesbezüglich möglicherweise Arbeitsspeicherprobleme geben?

Ich habe das Gefühl, die Probleme fangen immer genau dann an, wenn ich 2 Fenster gleichzeitig geöffnet habe.

Vielen Dank für eure Hilfe

Antwort 3 von fürLau

Hallo

Deine Bedenken bezüglich Arbeitsspeicher, kann man nicht gänzlich von der Hand weisen. Jedoch glaube ich eher, daß in Deinen Makros möglicherweise ungenügend qualifizierte Object-Bezeichner existieren, die beim Blattwechsel die FunKtion der Makros behindert.
Wenn Du Deine ArbeitsMappe veröffentlichen würdest, könnte man sich das ja ´mal ansehen - sofern da nichts geheimes/sensibles Datenmaterial enthalten ist. . www.netupload.de
Ohne Anschauungsmaterial ist das nämlich sehr abstrakt.

Gruß

Antwort 4 von Mahatmanix

Danke für die schnelle antwort.
Vor diesem von dir angeregtem Schritt kann ich ja erstmal einige Makros hier als Bsp. posten, vieleicht hilft das dann ja schon.

Die Checkbuttons verweisen immer jeweils auf die Makros mit application.run ("makro")

die filtermakros sind alle analog aufgebaut, nur die verweise auf die spalte in der der autofilter aktiviert wird ändert sich und die zeilen bezeichnung, in der dann bei aktivierung eines filters ein schönes, rotes "an" erscheint:
Bsp. für einen Filter an:
Sub Aa2an()
Windows("Geschäftsberichtsbenchmarking.xls:1").Activate
Selection.AutoFilter Field:=95, Criteria1:="1"
Range("A4").Select
Windows("Geschäftsberichtsbenchmarking.xls:2").Activate
Range("S30").Select
Selection.Font.ColorIndex = 3
End Sub

Bsp. für aus:
Sub Aa2aus()
Windows("Geschäftsberichtsbenchmarking.xls:1").Activate
Selection.AutoFilter Field:=95
Windows("Geschäftsberichtsbenchmarking.xls:2").Activate
Range("S30").Select
Selection.Font.ColorIndex = 2
Windows("Geschäftsberichtsbenchmarking.xls:1").Activate
Range("A4").Select
Windows("Geschäftsberichtsbenchmarking.xls:2").Activate
Range("S30").Select
End Sub

Wie gesagt, die checkbuttons sind auf einem Registerbaltt, gefiltert wird auf einem anderen.
beide sollen simultan durch das aufrufen von 2 fenstern gezeigt werden.
Habe gerade gesehen, dass ich in den makros keine explizite aktivierung der jeweiligen registerblätter habe. dürfte aber nicht nötig sein, da ich meiner geplanten navigationsleiste dieses problem berücksichtigt hatte.
Wenn ich von einem ganz anderen Register wieder auf diese Filterseiten, die ich oben beschrieben hatte, wechseln möchte, gehe ich über einen checkbutton mit diesem Makro (fenstergrößen werden geändert etc.)
Sub unternehmensdaten()
´
´ unternehmensdaten Makro
´ Makro am 22.05.2006 von GGZKA04 aufgezeichnet
´

´
Windows("Geschäftsberichtsbenchmarking-aktuell-2.xls:1").Activate
Sheets("Unternehmensdaten").Select
With ActiveWindow
.DisplayHeadings = False
.DisplayWorkbookTabs = False
.Width = 168
.Height = 583.5
End With
With ActiveWindow
.Top = 1.75
.Left = 1.75
End With
Windows("Geschäftsberichtsbenchmarking-aktuell-2.xls:2").Activate
Sheets("Tabelle1").Select
With ActiveWindow
.DisplayHeadings = False
.DisplayWorkbookTabs = False
.Top = 1.75
.Left = 166
End With
With ActiveWindow
.Width = 795.75
.Height = 583.5
End With
Windows("Geschäftsberichtsbenchmarking-aktuell-2.xls:2").Activate
End Sub


Ok, alles mit SIcherheit noch abstrakter, aber vieleicht könnt ihr mir ja schon weiterhelfen.

Nochmals vielen Dank

Antwort 5 von fürLau

Hallo

Wofür stehen denn die ":1" und ":2" hinter den *.xls jeweils?

Gruß

Antwort 6 von CaroS

@fürLau:

Harmlose Angelegenheit: Wenn Du eine Datei/Mappe in mehreren Fenstern anzeigst (über Menü Fenster -- Neues Fenster usw.), dann kannst Du damit
das eine (
Windows("Dateiname.xls:1").Activate
)
oder das andere (
Windows("Dateiname.xls:2").Activate
) Fenster aktivieren. Lässt sich schnell ausprobieren.

Dem Vorschlag, (nach einem Download) selbst mal einen Blick auf die Datei zu werfen, schließe ich ich an.

Gruß,
CaroS

Antwort 7 von fürLau

@CaroS

Danke für Aufklärung - diese Funktion kannte ich bisher noch nicht - aber man wird alt wie eine Kuh, und lernt immer noch dazu.
Und es geht sogar mit meinem vorsintflutigartigem Excel2000.

Grüße nach Berlin

Antwort 8 von MahatmaNix

Ok, danke für eure Mühen.
Vom Hochladen möchte ich lieber Abstand nehmen, da ich die arbeiten hier für die Firma mache und mich nicht so wirklich wohl dabei fühlen würde, sollten die Daten mehr oder weniger öffentlich eingesehen werden.
Das Problem scheint ja leider nicht bekannt zu sein, hatte gehofft, dass das schon öfter vorgekommen ist.

Ich habe noch ein anderes Problem, bei dem ihr mir eventuell helfen könnt ;-)

Ich hoffe es macht nichts aus, wenn ich dieses weiter in diesen Thread schreibe.

Ich habe auf mehreren Registerblättern die gleichen Werte in der ersten Spalte. Im Konkreten sind dies Unternehmesnamen. Im ersten Register, wie auch oben beschrieben, kann man bestimmte Unternehmen rausfiltern.
Ich würde gerade diese autofilterung auf die weiteren Registerblätter übernehmen.
Ist das möglich?
Ich habe auch gesehen, dass es dazu bereits threads gibt, leider funktionierte die vorgeschlagene Programmierung des damaligen falles bei mir nicht.

Vielen Dank und Grüße