其中一个Excel Autoshapes表现不像另一个

时间:2018-04-23 22:40:54

标签: excel vba

我有相同的代码片段打开三个不同的宏......

Set c = ActiveSheet.Shapes(Application.Caller)

在其中两个中,该线捕获了我需要的形状。在第三,它抛出......

  

运行时错误'-2147024809(80070057)':

     

找不到具有指定名称的项目。

然而,当我在这个问题宏中调试并突出显示Application.Caller时,我可以看到它知道它正在看什么形状(在这种情况下,msoShapeSnip2SameRectangle)。有效的是msoShapeDownArrow和msoShapeMathMultiply,如果这有任何区别的话。

关于为什么它不能在第三个宏中工作的任何想法?我首先尝试将它定义为Shape和Object。

1 个答案:

答案 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