Gruppierte Schaltflächen ändern (MS Excel)

Hallo VBA-Profis,

ich hab in meier Arbeitsmappe mehrere Schaltfläche, die ich als eine Gruppe zusammenfassen muß.
Dadurch entsteht mir allerdings folgendes Problem:
Ich kann eine Schaltfläche, die in einer Gruppe steckt, nicht mehr durch Makros verändern (z.B. enabled = true/false). Oder geht das doch irgendwie?

Bin um jede Hilfe und Idee dankbar

Gruß
Tobias

Hallo, Tobias!

ich hab in meier Arbeitsmappe mehrere Schaltfläche, die ich
als eine Gruppe zusammenfassen muß.

Bevor ich mir Gedanken mache, ob das untere funktioniert oder nicht oder warum nicht: Warum „musst“ Du das machen? Es gibt eigentlich keinen derartigen Grund. Wenn Du sie optisch gruppieren willst, male einfach einen Rahmen drumherum. Das Ein-/Ausblenden und verschieben ist dann zwar minimal aufwändiger, da Du alle Schaltflächen markieren oder bearbeiten musst, aber es sollte alles normal laufen.

Gruß, Manfred

Hallo Manfred,

ich habe die Schaltflächen gruppiert, um zu verhindern, dass sie sich nach jedem Ausdruck oder nach Aufruf der Seitenansicht von selbst verschieben.

Dieser Fehler dürfte druckerabhängig sein. Bei dem einen Rechner/Drucker paßt’s, beim nächsten machen die Schaltflächen wieder Probleme. Da diese Arbeitsmappe auf mehreren Rechnern zum Einsatz kommen soll, hab ich darauf leider keinerlei Einfluß.

Hatte vor einiger Zeit diesbezüglich auch schon mal einen Artikel hier im Forum und eine direkte Erklärung bzw. Ursache für diese Eigenart wußte damals auch niemand.

Hilft dir das schon weiter?

Danke für deine Bemühungen

Gruß
Tobias

Hallo Tobias,

Hallo VBA-Profis,

;-( bin ich nicht. Aber eventuell kann ich trotzdem helfen. :wink:

ich hab in meier Arbeitsmappe mehrere Schaltfläche, die ich
als eine Gruppe zusammenfassen muß.

Das verstehe ich nicht. Meinst Du damit ein Steuerelementefeld? Oder willst Du sie nur mit einem Befehl ein-/ausblenden?

Dadurch entsteht mir allerdings folgendes Problem:
Ich kann eine Schaltfläche, die in einer Gruppe steckt, nicht
mehr durch Makros verändern (z.B. enabled = true/false). Oder
geht das doch irgendwie?

Dann meinst Du sicher Steuerelementefelder. Ja, geht trotzdem.

Wenn Dein Button ‚Command1‘ heißt und Du den dritten von mehreren ausblenden willst, dann geht …

Command1(3).Visible = False

Statt ‚3‘ kannst Du auch eine Variable verwenden.
Wenn Du wissen willst, welcher angeklickt wurde, das steht in der Variablen ‚Index‘.

Private Sub Command1\_Click( **Index** As Integer)

Willst Du nicht mit einem Steuerelementefeld arbeiten und nur mehrere mit einem Beflehl ‚ausblenden‘ dann lege sie einfach in einen ‚Frame‘, den Du dann auf Enabled oder Visible = False setzen kannst.

Gruß, Rainer

Hallo, Tobias!

ich habe die Schaltflächen gruppiert, um zu verhindern, dass
sie sich nach jedem Ausdruck oder nach Aufruf der
Seitenansicht von selbst verschieben.

Geb mal die Gruppierung auf, geh auf „Steuerelement formatieren“ und wähle unter „Eigenschaften“ die Option „Von Zellposition und -größe unabhängig“ aus. Dann sollten sich die Schaltflöchen nicht mit der Änderung der Zellen z. B. beim Ausdruck verschieben.

Gruß, Manfred

Hallo Rainer!

Das verstehe ich nicht. Meinst Du damit ein
Steuerelementefeld? Oder willst Du sie nur mit einem Befehl
ein-/ausblenden?

Hatte ich auch nicht. Geht wohl nicht um die Controls auf einem Formular, sondern direkt in einer Tabelle. Diese werden wohl gruppiert, um ein Verschieben und/oder skalieren nach dem Ausdruck/neu formatieren der Zellen zu verhindern.

Theoretisch könnte man per Code diese Gruppierung vielleicht wieder aufheben (Geht das wirklich?), die Eigenschaften setzen und dann die Gruppierung wieder herstellen. Aber vielleicht lässt sich das Problem auch anders lösen (siehe anderes Posting).

Gruß, Manfred

Hallo Manfred,

das war auch mein erster Gedanke, wie ich dieses Problem beseitigen kann. Hat jedoch leider keinerlei Einfluß auf das Verschieben meiner Schaltflächen.

Gruß, Tobias

Hallo Tobias!

das war auch mein erster Gedanke, wie ich dieses Problem
beseitigen kann. Hat jedoch leider keinerlei Einfluß auf das
Verschieben meiner Schaltflächen.

Was verschiebt sich denn in welchem Fall wie?

Gruß, Manfred

Hallo Manfred,

ich habe z.B. in einem Tabellenblatt 6 Schaltflächen, 3 davon sind in diesem Tabellenblatt eingebettet, 3 sind nur eingefügt.
–> Die Makros für die ersten 3 sind in dem Tabellenblatt hinterlegt, die der anderen 3 auf mehrere Module verteilt
Soll am besten auch so bleiben, bringt mir viele Vorteile

Nach einem Ausdruck des entsprechenden Tabellenblatts verschieben sich die 3 eingebetteten Schaltflächen immer nach links auf immer die gleiche Position. Vertikal erfolgt keine Verschiebung.
Auch ob die Schaltflächen von der Zellenposition abhängig sind oder nicht, hat auf die Verschiebung keinerlei Einfluß. Sie landen immer an der gleichen Position. Eben erst durch eine Gruppierung konnten die eingebetteten Schaltflächen an die feststehenden „gebunden“ werden.

Gruß, Tobi

Hallo Rainer und Manfred,

Theoretisch könnte man per Code diese Gruppierung vielleicht
wieder aufheben (Geht das wirklich?), die Eigenschaften setzen
und dann die Gruppierung wieder herstellen. Aber vielleicht
lässt sich das Problem auch anders lösen (siehe anderes
Posting).

hätte ich auch schon probiert, jedoch bislang erfolglos. Durch das Aufgeben der Gruppierung und wiederherstellen dieser bekommt sie eine andere Bezeichung/Nummer und kann deshalb nicht wieder durch ein Makro aufgerufen werden.

Bei meinen Schaltflächen handelt es sich um Befehlsschaltflächen oder CommandButtons. Hoffe das ist die richtige Bezeichnung.
Ich möchte sie auch gar nicht komplett verschwinden lassen, wie z.b. durch den Befehl .visible =false sondern nur auswählbar und nicht auswählbar (.enabled)

Danke für eure Hilfe

Gruß, Tobias

Hallo Tobias,
sorry, die speziellen Probleme von VBA kenne ich nicht so gut, ich arbeite immer nur mit VB.

Gerade habe ich das mal in Excel problert und gesehen, wo Dein Problem liegt. Den Befehl hat mir das Programm abgenommen, nur Wirkung hatte er keine. … Wie wäre es, das Problem durch eigenen Code zu umgehen?

 Dim Flag As Boolean
 
Private Sub CommandButton1\_Click()
 Flag = True
 CommandButton3.Caption = "AUS"
End Sub

Private Sub CommandButton2\_Click()
 Flag = False
 CommandButton3.Caption = "Ein"
End Sub

Private Sub CommandButton3\_Click()
 If Flag = False Then
 CommandButton3.Caption = "selbst"
 End If
End Sub

hatte bei mir den gewünschten Effekt.

Gruß, Rainer

Nochmals danke,

die Befehle an sich, funktioieren bei mir fehlerlos und machen auch dass, was sie sollen. Das Problem ergibt sich bei mir erst, wenn ich meine CommandButtons in Excel gruppiere. Dann ist es VBA scheinbar nicht mehr möglich, auf einzelne Buttons zuzugreifen sondern nur noch auf die gesamte Gruppe.

hab mich vorher wohl etwas mißverständlich ausgedrückt. Hoffe, du hast nicht zu viel Zeit in deinen Code gesteckt.

Gruß, Tobias

Hallo Tobias,

die Befehle an sich, funktioieren bei mir fehlerlos und machen
auch dass, was sie sollen. Das Problem ergibt sich bei mir
erst, wenn ich meine CommandButtons in Excel gruppiere. Dann
ist es VBA scheinbar nicht mehr möglich, auf einzelne Buttons
zuzugreifen sondern nur noch auf die gesamte Gruppe.

das war bei mir auch so, nachdem ich die Buttons gruppiert hatte. Ich habe dann einen der Buttons mir rechts angeklickt und ‚Makro zuweisen‘ angeklickt und den Vorschlag bestätigt. Danach konnte ich z.B. die Beschriftung der Buttons (Caption Eigenschaft) ändern, nur die Zuweisung von Enabled = False hatte keine Wirkung. Das Beispiel ist also mit gruppierten Buttons und tut das, was Du möchtest.

hab mich vorher wohl etwas mißverständlich ausgedrückt.

Nein, ich. :wink:

Hoffe, du hast nicht zu viel Zeit in deinen Code gesteckt.

Nur Freizeitgestaltung in der Mittagspause, kein Problem.

Gruß, Rainer

Hallo Tobias,
ich maile Dir das Beispiel mal zu.
Gruß, Rainer

Hallo Robert

Dann werd ich deinen Vorschlag gleich noch in mein Programm einarbeiten. Müßt bei mir ja auch so funktionieren.

Also nochmals danke, hast mir sehr weitergeholfen.

Bis zum nächsten Problem, in irgendeiner Mittagspause

Gruß
Tobias