土曜の昼、学校帰りの昼メシの思い出

VBA初心者のためよろしくお願いします。
タイトル通り、シート上にあるコマンドボタンを削除したいです。
visible,enabledなどは使用せず、コントロールごと削除したいと考えています。

私は
Worksheets("sheet1").CommandButton1.Delete
だけで削除できると思っていたのですが、実行してみると
 プロシージャの呼び出し、または引数が不正です
というエラーが出てきてしまいます。

検索はしてみたのですが、中々発見できずに苦労しています。
わかる方がいましたら、よろしくお願いします。

A 回答 (3件)

Option Explicit



'全部を削除したい場合
Sub DeleteAllControls()
Dim obj As OLEObject
'Selects all ActiveX controls on the active sheet and deletes them
For Each obj In ActiveSheet.OLEObjects
obj.Delete
Next obj
End Sub

'例えば、Comboboxのみ削除したい場合(プロパティでタイプ確認できます)
Sub DeleteComboboxesOnly()
Dim obj As OLEObject
'Checks each ActiveX control on the active sheet
'If the control is a ComboBox delete it
'go to the next control and do same.
For Each obj In ActiveSheet.OLEObjects
If obj.ProgId = "Forms.ComboBox.1" Then obj.Delete
Next obj
End Sub
    • good
    • 6

手動で実行できる内容は、一応マクロの記憶を取ってみることをお勧めします


回答はNo.1さんが示された方法ですが、シートやセルに対する操作は、大体解決できますよ

あと、ボタンだけ消せば良いのでしょうか?
シートにボタンが乗っていて、それをマクロで削除したいとなると、ボタンに何らかの機能を持たせていたと言う事ですよね
ボタンを消しただけでは、シートに乗っていたボタンの動作を示したマクロ
Private Sub CommandButton1_Click()
みたいのは、シートにコードが載ったままです
ボタンを削除して、そのシートだけ別Bookに保存 なんて事をするのであれば、シートのコードも削除する必要があります

フォームのボタン(最初「ボタン1」ってなるボタン)を利用しているのであれば、関係ない話なので気にしなくていいですが、コントロールツールボックスのボタン(最初「CommandButton1」ってなるボタン)を使用しているのであれば、必要な事です
VBE(AじゃなくE)などで検索してみて下さい
    • good
    • 4

ActiveSheet.Shapes("CommandButton1").Delete

    • good
    • 8

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A