Excel不释放形状的创build名称

我发布这个,希望它可以帮助别人,因为我的search没有透露任何有关这方面的信息。

我在构build一个可以复制embedded的表单形状的过程时遇到了这个问题,并将其粘贴在同一张表上,然后运行重命名scheme,以便于引用这些形状之一

这应该很简单,但我遇到了一个间歇性的问题。 最终我意识到,Excel似乎在创build时“记住”了形状的原始名称,并将其标记为正在使用中,只有当形状被删除时才会释放它。 所以,如果你重新命名形状,你永远不能将它返回到原来的名字。 例如,如果将“button1”重命名为“Btn1”,则永远不能将其更改回“button1”。 有趣的是,现在可以通过名称“button1”或“Btn1”来引用形状。

在下面的macros中,假设“button1”是创build名称,则s.Name将最终为“Btn1”,尽pipe看起来它将返回到“button1”。

Sub RenameShape() Dim s As Shape Dim nm As String Set s = ActiveSheet.Shapes("Button 1") nm = s.Name s.Name = "Btn1" s.Name = nm End Sub 

从那以后,我遇到了一些关于形状的“内部”和“外部”名称的链接 – 我假设“内部”名称是Excel不会忘记的名称,而“外部”名称是通常看到的暴露的名字。

我有兴趣听到任何人可以更深入地了解这一点。

由于这篇文章的主要目的是传递信息,所以我将这个答案作为答案,因此可以closures。