VBA:删除除了一个之外的所有按钮的最佳方法
我在Excel中有不同的按钮,我想删除除了一些之外的所有按钮。VBA:删除除了一个之外的所有按钮的最佳方法
我跑
ActiveSheet.Buttons.Delete
,但我怎么可以声明保留一个(我们可以假设它被称为“MyButton1”)?
通过循环访问ActiveSheet.Shapes,您可以看到工作表上的所有不同按钮。在下面的例子中,它将btn =
分配给它正在查看的当前按钮。如果按钮的名称不是"MyButton1"
那么它将被删除。 Next将它发送回顶端以重新开始。
For Each btn In ActiveSheet.Buttons
If btn.Text <> "MyButton1" Then
btn.Delete
End If
Next
你可以做到这一点,并将“MyButton1”更改为任何你想要的。由于我假设这不是你的实际按钮的名称。此外,如果由于某种原因您只有想要删除那个特别命名的按钮,您只需将<>
切换为=
即可。因此,它会读
If btn.Text = "MyButton1" Then btn.Delete
编辑 -
改变btn.Name
到btn.AlternativeText
搜索按钮的可见文本而不是对象名称本身。
编辑2 -
,你曾在你不想删除工作表额外的元素我已经删除ActiveSheet.Shapes。我用ActiveSheet.Buttons
替换了原始代码,并用btn.Text
替换了AlternativeText
以标识按钮名称。同样,如果您没有在带有按钮的工作表上运行此代码,则需要先参考工作簿和工作表。
我得到:指定集合中的索引超出范围。我只改变了:如果btn.Name “myButton1”或btn.Name “myButton2”Then' – Thegamer23
您是否在按钮所在的同一张桌面上运行宏?如果不是,则需要将活动页更改为Workbooks.Sheets(“Sheetname”)。形状 例如,如果您正在使用标题为“Book1”的工作簿,并且标题为“Sheet1”。然后代码将会:'对于工作簿中的每个btn(“Book1”)。表格(“Sheet1”)。形状'然后代码的其余部分 – Busse
是的。我在同一张纸上 – Thegamer23
发布您尝试过的代码。布斯一直非常慷慨地为你写这篇文章 - 大多数人不会。 – FreeMan