Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Makro ausführen, welches sich hinter einem best. Shape befindet
#1
Hi Leute, 

ich tüftel mal wieder ein bisschen an meiner Tabelle. Ich habe auf einem Blatt viele verschiedene Shapes (Normale viereckiger Formen) bei deren Klick ein Makro ausgeführt wird. Nun zur Frage: 
Kann ich die Shapes in Abhängigkeit ihrer Position irgendwie ansprechen? 
Z. B. befindet sich ein Shape in der Zelle A4 - wie kann ich das dahinter befindliche Makro ausführen, ohne, dass ich den Namen des Shapes nutze/kenne.

Wenn ihr zum tüfteln eine kleine Beispieldatei braucht, bastel ich schnell etwas. Meiner Meinung nach ist das aber eher eine grundlegende als spezielle Frage. 

Gruß Tim
Antworten Top
#2
Hallo,

Du könntest vielleicht Application.Caller verwenden, was Dir zwar auch den Namen des Shapes zurückgibt, aber dynamischer und Du dann das Shape
wiederum aus der Shapes-Collection abfragen kannst.

Code:
MsgBox ThisWorkbook.Worksheets(1).Shapes(Application.Caller).TopLeftCell.Address

Geht allerdings nur wenn alle Shapes einen eindeutigen Namen haben, also Du nicht z.B. selbst benannte Shapes dupliziert hast.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top
#3
Mhm,

irgendwie tut sich bei mir gar nix, wenn ich die Befehlszeile eingebe. Er spuckt im debugger aus, dass der Name nicht gefunden werden konnte.

Was macht application.caller denn genau? Die Microsoft-Hilfe war nicht so aufschlussreich für mich :/


Gruß


Edit: Ok, habs nun rausgefunden, was der Befehl macht. Allerdings ist es nicht das, was ich suche. Ich habe die Adresse, wo sich ein Shape befindet und möchte dieses (bzw. das Makro dahinter) dann auslösen, obwohl ich den Namen des Shapes nicht kenne.
Antworten Top
#4
Hallo Tim,
Sub DasMakro()
Select Case ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address(0, 0)
Case "A4"
Makro1
Case "A10"
Makro2
Case "F4"
Makro3
End Select
End Sub
Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste