2017-07-07 71 views
-1

我在Excel中有不同的按钮,我想删除除了一些之外的所有按钮。VBA:删除除了一个之外的所有按钮的最佳方法

我跑

ActiveSheet.Buttons.Delete 

,但我怎么可以声明保留一个(我们可以假设它被称为“MyButton1”)?

+1

发布您尝试过的代码。布斯一直非常慷慨地为你写这篇文章 - 大多数人不会。 – FreeMan

回答

2

通过循环访问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.Namebtn.AlternativeText搜索按钮的可见文本而不是对象名称本身。


编辑2 -

,你曾在你不想删除工作表额外的元素我已经删除ActiveSheet.Shapes。我用ActiveSheet.Buttons替换了原始代码,并用btn.Text替换了AlternativeText以标识按钮名称。同样,如果您没有在带有按钮的工作表上运行此代码,则需要先参考工作簿和工作表。

+0

我得到:指定集合中的索引超出范围。我只改变了:如果btn.Name <>“myButton1”或btn.Name <>“myButton2”Then' – Thegamer23

+0

您是否在按钮所在的同一张桌面上运行宏?如果不是,则需要将活动页更改为Workbooks.Sheets(“Sheetname”)。形状 例如,如果您正在使用标题为“Book1”的工作簿,并且标题为“Sheet1”。然后代码将会:'对于工作簿中的每个btn(“Book1”)。表格(“Sheet1”)。形状'然后代码的其余部分 – Busse

+0

是的。我在同一张纸上 – Thegamer23

相关问题