Excel VBA-复制形状代码不总是有效

Excel VBA-复制形状代码不总是有效,excel,vba,Excel,Vba,我有一个excel工作簿,其中有些形状可以用作按钮。在其中一个形状上,有一个宏指定给它,它可以执行多个操作。它创建一个新的工作表,并使用该新工作表执行多项操作。它所做的一件事是复制两个不同的形状,这些形状超链接到工作簿中的其他工作表。代码可以工作,但并不总是如此。出于某些原因,有时它不会复制任一形状,或者可能只复制一个形状。它在80%的时间里对两种形状都有效。下面是从其他图纸复制形状的代码部分。有人能解释为什么它不总是起作用吗 ' Copy Index linked button from Ca

我有一个excel工作簿,其中有些形状可以用作按钮。在其中一个形状上,有一个宏指定给它,它可以执行多个操作。它创建一个新的工作表,并使用该新工作表执行多项操作。它所做的一件事是复制两个不同的形状,这些形状超链接到工作簿中的其他工作表。代码可以工作,但并不总是如此。出于某些原因,有时它不会复制任一形状,或者可能只复制一个形状。它在80%的时间里对两种形状都有效。下面是从其他图纸复制形状的代码部分。有人能解释为什么它不总是起作用吗

' Copy Index linked button from Calculator sheet
Sheets("Calculator").Shapes("Rounded Rectangle 3").Copy
Range("L3").Select
ActiveSheet.Paste

' Copy Calculator linked button from Index sheet
Sheets("Index").Shapes("Rounded Rectangle 1").Copy
Range("J3").Select
ActiveSheet.Paste

形状名称很可能正在以某种方式更改。复制Excel中任何命名的“对象”时,也会复制该名称,但Excel会稍微更改该名称。例如,复制命名的
Sheet1
将创建命名的
Sheet1(2)
。除非你非常小心地管理你的形状名称,否则这很容易让你绊倒。或者,您可以将形状名称(或任何Excel命名的“东西”)的范围限制为单个工作表的局部范围,而不是整个工作簿的全局范围。如果形状的名称是本地的,您可以在不同的图纸上使用完全相同的名称。形状名称很可能正在以某种方式更改。复制Excel中任何命名的“对象”时,也会复制该名称,但Excel会稍微更改该名称。例如,复制命名的
Sheet1
将创建命名的
Sheet1(2)
。除非你非常小心地管理你的形状名称,否则这很容易让你绊倒。或者,您可以将形状名称(或任何Excel命名的“东西”)的范围限制为单个工作表的局部范围,而不是整个工作簿的全局范围。如果形状的名称是本地的,则可以在不同的图纸上使用完全相同的名称。