官网给的解释基本看不懂
反复测试下能搞懂的部分,我知道就三点
1)单元格调用自定义函数的时候,表示单元格自己
单元格调用老版本又分2种
同样下面的代码
Function test()
Dim rng As Range
Set rng = Application.Caller
test = rng.Address
End Function
-
如果我在
C14
单元格里使用,就返回的结果是:$C$14
-
如果我在
C12:E12
范围用CTRL+SHIFT+ENTER的数组方式使用,返回的就是这个区域$C$12:$E$12
2)在一些很古老的事件使用的时候表示文本的文档名称
举个栗子
Sub auto_open()
Debug.Print Application.Caller
End Sub
这个其实就是一个启动事件,上面代码启动就会显示文档名称:
[工作簿1.xlsm]Sheet1
按官方文档说明能用几个事件:
- Auto_Open
- Auto_Close
- Auto_Activate
- Auto_Deacitvate
上面的代码直接写模块里就可以,不需要去Thisworkbook里写
3)可以返回调用代码的图形名称
Sub 调用自己()
' 定义变量 sp 为 Shape 类型
Dim sp As Shape
' Application.Caller得到图形的名字,ActiveSheet.Shapes()就是拿名字得到图形
Set sp = ActiveSheet.Shapes(Application.Caller)
' 将按钮 sp 中的文本内容赋值给单元格 A1
[a1].Value = sp.TextFrame2.TextRange.Characters.Text
End Sub
结果如下图