Sub a() Dim v Select Case TypeName(Application.Caller) Case "Range" v = Application.Caller.Address Case "String" v = Application.Caller Case "Error" v = "Error" Case Else v = "unknown" End Select MsgBox "caller = " & v End Sub
请问这个示例的作用是什么?
谢谢!
使用道具 举报
单独放没啥意思,你把这个放到自定义函数或者用一个窗体控件指定宏看看。
看看帮助。只有在下面调用进程中的情况,Caller才会记录东西。
那贴并没有放到自定义函数或者用一个窗体控件指定宏呀
那贴:http://www.excelpx.com/forum.php?mod=viewthread&tid=105322
谢谢DJ
我还是没明白
比如我喊:"爱疯",你答应了,你是响应者,我就是Caller(引起了你的响应)
说到了就顺便谈谈。
Caller其实是个蛮有用的东西。
把它想象成一个记录器,当你执行某些操作时(见调用进程),会帮你记录下一些信息(返回值)。
举两个例子
1、兰版的类模块中有一例就是判断点击了哪张图片。
其实也可以这么做。写一个过程如下:
Sub Test() MsgBox Application.CallerEnd Sub
然后写另一个过程让所有的图片都指定Test这个宏,你再点击看看。
2、函数Row()参数省略时如何得出当前单元格的呢?
参考以下自定义函数:
Function MyRow(Optional MyRng As Range) If MyRng Is Nothing Then MyRow = Application.Caller.Row Else MyRow = MyRng.Row End IfEnd Function
当MyRng没有定义时,那么就通过Caller来得到自定义函数所在单元格的对象。
帮你简化了代码:
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )
GMT+8, 2024-6-6 07:15 , Processed in 0.311607 second(s), 6 queries , Gzip On, Yac On.
Powered by Discuz! X3.4
Copyright © 2001-2020, Tencent Cloud.