Click()子(VBA)上的全局对象引用

我想知道是否有办法引用“Click()”子对象。

为了使它更清晰,假设我们有一个名为foo1的button,并且此button有一个点击子“foo1_Click()”。 vba是否有一个关键字来获得对全球性的foo1的引用?

就像是:

Public Sub foo1_Click() GlobalKeyword.Property End Sub 

Ps:类似于来自java的“this”一词,指的是它自己的类的实例

编辑:在这个例子中,“GlobalKeyword”将引用“foo1”

我想你正在寻找这里find的Application.Caller属性。

在你的情况下,你会想要做一些像….

 Public Sub foo1_Click() Dim button As Shape Set button = ThisWorkbook.Sheets("sheetname").Shapes(Application.Caller) End Sub 

当然之后,你会想做一些错误检查,以确保button不是什么。

如果你想用很多button使用相同的代码,那么你可能会更好地使用一个单独的子例程。

 Private Sub foo1_Click() Call do_something End Sub Private Sub foo2_Click() Call do_something End Sub Sub do_something() 'called by the foo _Click event MsgBox Application.Caller End Sub 

这样,只需更新do_something过程,就可以轻松维护所有button的核心function。