2017-07-07 569 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

相關問題