Makros aufrufen per Befehlsschaltfläche

Moin,

das tue ich zwecks Einfärben eines Balkens in einem Diagramm. Ich selektiere den (genau einen!) Balken, klicke dann auf eine Schaltfläche, die genau den Makro aktiviert.
Dann kommt aber

"Objekt unterstützt diese Eigenschaft oder Methode nicht"

. Durch das Drücken der Schaltfläche wird offensichtlich die Selektion vom Balken weggenommen und auf die Scaltfläche gelegt.
Wenn ich den Makro über Extras -> Makros aktiviere funktioniert es.

Was kann ich tun?

Danke
Laika

Ich bitte um Nachsicht, denn ich hatte das Thema schon mal vor einer Weile, finde nur nix mehr dazu :frowning:(

Dann kommt aber

„Objekt unterstützt diese Eigenschaft oder
Methode nicht“

. Durch das Drücken der Schaltfläche wird
offensichtlich die Selektion vom Balken weggenommen und auf
die Scaltfläche gelegt.

Hallo Laika,

bei Button aus Steuerelementtoolbox (ActiveX-Element) kannst du per Code oder manuell in den Eigenschaften
TakeFocusOnClick auf False setzen.

Gruß
Reinhard

Danke Reinhard,

einen Button aus der Steuerelementtoolbox hatte ich schon „in der Tabelle“ plaziert. Da trat der Fehler dann immer auf.
Jetzt habe ich das object.TakeFocusOnClick = False eingebaut. Aber was ist das Objekt? Sein Name ist „Schaltfläche 44“, also CommandButton44? Wird abgewiesen. Nur CommandButton? Wird abgewiesen. Der Versuch, den Objektnamen mit MsgBox Selection.Name herauszufinden wird abgewiesen.
Was mache ich falsch.
Wenn ich den CommandButton in einer Symbolleiste plaziere, funktioniert es.

Gruss
Laika

Hallo Laika,

einen Button aus der Steuerelementtoolbox hatte ich schon „in
der Tabelle“
plaziert. Da trat der Fehler dann immer auf.

okay.

Jetzt habe ich das object.TakeFocusOnClick = False eingebaut.

Wo, wie, in welchen Code?

Aber was ist das Objekt? Sein Name ist „Schaltfläche 44“, also
CommandButton44?

? „Schaltfläche“ deutet sehr stark auf einen Button aus der Symbolleiste „Formular“ hin.

Wenn ich den CommandButton in einer Symbolleiste plaziere,
funktioniert es.

Ich muß ja nicht alles verstehen :smile:

Nähern wir uns mal der sache von unten her:

Sub Check()
Dim S
For Each S In ActiveSheet.Shapes
 MsgBox S.Name & " - " & S.Type
Next S
End Sub

Sub nn()
Worksheets("Tabelle1").CommandButton1.TakeFocusOnClick = False
End Sub

S.Type bringt 12 bei Steuerelementtoolbox und 8 bei Formulartoolbox.
Bei 12 kannste den angezeigten Namen des Buttons nehmen und in Sub nn einfügen anstatt CommanButton1.

Gruß
Reinhard

Moin Reinhard,

Jetzt habe ich das object.TakeFocusOnClick = False eingebaut.

Wo, wie, in welchen Code?

Am Anfang des Makros, der bei Klick auf die Schaltfläche ausgeführt wird:

? „Schaltfläche“ deutet sehr stark auf einen Button aus der
Symbolleiste „Formular“ hin.

Nein, aus der Symbolleiste „Zeichnung*“, jetzt sehe ich, dass die auch in „Formular“ ist. Sollte aber wohl egal sein.

Wenn ich den CommandButton in einer Symbolleiste plaziere,
funktioniert es.

Ich muß ja nicht alles verstehen :smile:

?? Rechtsklick auf den Symbolleistenbereich (oben) -> Anpassen … -> Kategorie „Steuerelemente-Toolbox“ -> Befehlsschaltfläche. Diese in eine Symbolleiste (vordefiniert oder selber definiert). Dieser dann einen Makro verpassen. Die Befelsschaltfläche kann ich NUR in eine Symbolleiste ziehen, nicht irgendwohin in das Tabellenblatt. Das geht nur mit der Befelsschaltfläche aus „Formular“ oder „Zeichnung*“
So definiere ich alle meine Symbolleisten und so ist es ja auch gedacht. Andere Wege kkenne ich nicht. Ich habe einige Symbolleisten, mit selbstkonstruierten Tasten, die mir die tägliche Arbeit erleichtern.

Nähern wir uns mal der sache von unten her:

:Sub Check()
Dim S
For Each S In ActiveSheet.Shapes
MsgBox S.Name & " - " & S.Type
Next S
End Sub

Ja, da werden meine Schaltflächen genannt, Typ 8. Der Name ist dann „Button 45“ (beachte das Blank!). Mit

Button.Name("Button 45").TakeFocusOnClick = False

wird es abgewehrt mit „Objekt unterstützt die Methode … nicht.“

Ich gebe es auf, habe die Schaltflächen in einer Symbolleiste plaziert, dann geht es. Die Symbolleiste gilt für eine Mappe, da kann ich sie mit „Visible“ in Autoopen/Autoclose ein-/ausblenden.

Gruss
Laika

Hallo Laika,

Jetzt habe ich das object.TakeFocusOnClick = False eingebaut.

Wo, wie, in welchen Code?

Am Anfang des Makros, der bei Klick auf die Schaltfläche
ausgeführt wird:

bei dir liegt etwas anderes vor *glaub* aber ich meinte damit genau den Code dieses Makros daß du den mal zeigst.

? „Schaltfläche“ deutet sehr stark auf einen Button aus der
Symbolleiste „Formular“ hin.

Nein, aus der Symbolleiste „Zeichnung*“, jetzt sehe ich, dass
die auch in „Formular“ ist. Sollte aber wohl egal sein.

Mir ist das nicht egal. In „zeichnen“ gibt es kein Symbol für eine Schaltflächeton. Die Objekte dort verhalten sich aber so, also man kann ihnen Makros zuweisen.

Wenn ich den CommandButton in einer Symbolleiste plaziere,
funktioniert es.

Ugs. bedeutet für mich „CommandButton“ ein Steuerelement aus der Steuerelementtollbox und den kannst du nicht in der Symbolleiste „ablegen“.
Du kannst dort ein neues Symbol erzeugen und diesem ein Makro zuweisen, das ist etwas anderes.

Ich muß ja nicht alles verstehen :smile:

?? Rechtsklick auf den Symbolleistenbereich (oben) -> Anpassen
… -> Kategorie „Steuerelemente-Toolbox“ ->
Befehlsschaltfläche. Diese in eine Symbolleiste (vordefiniert
oder selber definiert). Dieser dann einen Makro verpassen.

Ich muß zugeben daß tat ich noch nie (ich erzeuge Symbole anders), du hast schon ein bißchen Recht aber ich lasse trotzdem das oben gesagte stehen daß du da keinen CommandButton „ablegen“ kannst.

Einem CommandButton aus der Steuerelementtollbox wird kein Makro mit beliebigen Namen „zugewiesen“.
Klick auf ihn auszuwerten geht einzig mit diesem Coderumpf:

Private Sub CommandButton1_Click()
'… Code
End Sub

und der muß im Modul des Blattes stehen indem der Button ist.

So definiere ich alle meine Symbolleisten und so ist es ja
auch gedacht. Andere Wege kkenne ich nicht.

Kann man ändern.

Ja, da werden meine Schaltflächen genannt, Typ 8.

Aber nicht die die du da oben in der Symbolleiste angelegt hast.

Der Name ist dann „Button 45“ (beachte das Blank!).

Danke dir für den Hinweis *leise lächelnd*

Mit

Button.Name(„Button
45“).TakeFocusOnClick = False

wird es abgewehrt mit „Objekt
unterstützt die Methode … nicht.“

Warum nicht, ist korrekt, TakeFocusOnClick gilt für CommandButtons und du hast wohl keine.

Ich gebe es auf,

Nix da :smile:)
Lade mit file-upload, s. FAQ:2606 eine mappe hoch…

Gruß
Reinhard

Hallo Reinhard,

wie gesagt: es funktioniert jetzt mit der (privaten) Symbolleiste, daher nur ein paar Antworten.
Schönen Dank für Deine Mühe, aber ich will jetzt mal wieder was Produktives machen, nicht hinter irgendwelchen Excel-Sonderheiten hinterher laufen :wink:)

bei dir liegt etwas anderes vor *glaub* aber ich meinte damit
genau den Code dieses Makros daß du den mal zeigst.

Mir ist das nicht egal. In „zeichnen“ gibt es kein Symbol für
eine Schaltflächeton.

In „Zeichnen“ meinte ich nicht, in „Zeichnung*“.

Die Objekte dort verhalten sich aber so,
also man kann ihnen Makros zuweisen.

Ja, im Prinzip jedem beliebigen Objekt, das mache ich häufig mit z.B. Textfeldern.

Ugs. bedeutet für mich „CommandButton“ ein Steuerelement aus
der Steuerelementtollbox und den kannst du nicht in der
Symbolleiste „ablegen“.

Sondern wo? Wie gesagt: Rechtsklick auf den Symbolleistenbereich (oben) -> Anpassen -> Kategorie „Steuerelemente-Toolbox“ -> Befehlsschaltfläche.
Oder was meinst Du mit "Steuerelementtollbox "?
Ich habe Office 2003. Und Du? Hat MS da etwa wieder was geändert?

Einem CommandButton aus der Steuerelementtollbox wird kein
Makro mit beliebigen Namen „zugewiesen“.
Klick auf ihn auszuwerten geht einzig mit diesem Coderumpf:

Private Sub CommandButton1_Click()
'… Code
End Sub

Sprichst Du von Dialogfeldern?
Ich öffne „Anpassen“, wähle eine „Kategorie“ aus und kann jeden beliebigen Befehl, egal welche vordefinierte Bedeutung er hat, in eine Symbolleiste ziehen, dort ablegen und per Rechtsklick jeden beliebigen „Makro zuweisen …“

Bis demnächst und nichts für ungut, dass ich mich erstmal zurückziehe
Laika