Application.Caller详细解释

官网给的解释基本看不懂

反复测试下能搞懂的部分,我知道就三点

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

结果如下图

posted @ 2024-03-04 12:12  lyfegf  阅读(521)  评论(0)    收藏  举报