我有相同的代码片段打开三个不同的宏......
Set c = ActiveSheet.Shapes(Application.Caller)
在其中两个中,该线捕获了我需要的形状。在第三,它抛出......
运行时错误'-2147024809(80070057)':
找不到具有指定名称的项目。
然而,当我在这个问题宏中调试并突出显示Application.Caller时,我可以看到它知道它正在看什么形状(在这种情况下,msoShapeSnip2SameRectangle)。有效的是msoShapeDownArrow和msoShapeMathMultiply,如果这有任何区别的话。
关于为什么它不能在第三个宏中工作的任何想法?我首先尝试将它定义为Shape和Object。
答案 0 :(得分:0)
似乎传递给Application.Caller
如果我将该形状类型插入到工作表中,我会得到一个名为" Snip Same Side Corner Rectangle 1" (长度= 33),但传递给Application.Caller的值是" Snip Same Side Corner Rectangl" (长度= 30)
请注意,特定形状类型不是问题,只是默认名称的长度。如果您将形状重命名为更短的形状,它应该没问题。
编辑:之前 - How to get the Shape Clicked without Application.Caller