• 締切済み

エクセルVBA シート上にあるコマンドボタンを削除するには?

VBA初心者のためよろしくお願いします。 タイトル通り、シート上にあるコマンドボタンを削除したいです。 visible,enabledなどは使用せず、コントロールごと削除したいと考えています。 私は Worksheets("sheet1").CommandButton1.Delete だけで削除できると思っていたのですが、実行してみると  プロシージャの呼び出し、または引数が不正です というエラーが出てきてしまいます。 検索はしてみたのですが、中々発見できずに苦労しています。 わかる方がいましたら、よろしくお願いします。

みんなの回答

  • coldblade
  • ベストアンサー率20% (2/10)
回答No.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

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.2

手動で実行できる内容は、一応マクロの記憶を取ってみることをお勧めします 回答はNo.1さんが示された方法ですが、シートやセルに対する操作は、大体解決できますよ あと、ボタンだけ消せば良いのでしょうか? シートにボタンが乗っていて、それをマクロで削除したいとなると、ボタンに何らかの機能を持たせていたと言う事ですよね ボタンを消しただけでは、シートに乗っていたボタンの動作を示したマクロ Private Sub CommandButton1_Click() みたいのは、シートにコードが載ったままです ボタンを削除して、そのシートだけ別Bookに保存 なんて事をするのであれば、シートのコードも削除する必要があります フォームのボタン(最初「ボタン1」ってなるボタン)を利用しているのであれば、関係ない話なので気にしなくていいですが、コントロールツールボックスのボタン(最初「CommandButton1」ってなるボタン)を使用しているのであれば、必要な事です VBE(AじゃなくE)などで検索してみて下さい

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

ActiveSheet.Shapes("CommandButton1").Delete

関連するQ&A

  • VBAで指定したSheetの削除

    お世話になります 指定したシート以外すべてのシートを削除させるボタンを作成したいのですが ↓こんなものを見つけました。(URLわからくなってしまった;;) これは図1~ワークシートを削除させるVBAらしいのですが ■解らないこと なぜかsheetにすると削除してくれません。 '指定以外ワークシート削除 Private Sub CommandButton1_Click() Dim myShe As Worksheet For Each myShe In Worksheets If myShe.Name <> Worksheets("図").Name Then myShe.Visible = Delete End If Next End Sub

  • VBAでのシートの削除について

    あるシート("コントロール")の前に存在するシートを全て削除しようと思います。どう記述すれば良いでしょうか? あるシート("コントロール")の前にシートを追加するときは、 Worksheets.Add BEFORE:=Sheets("コントロール") でいけたので、 Worksheets.Delete BEFORE:=Sheets("コントロール") でいけるだろうと思ったら、無理でした。 教えてください。

  • エクセル2007VBAでコマンドボタンのプロパティ表示

    いつもお世話になります。最近エクセル2007でVBAを使うようになりました。フォームコントロールからコマンドボタンを挿入したのですが、コマンドボタンのプロパティを表示しようとしても表示できません。2003では表示できます。2003では、コマンドボタンを選択して右クリック→プロパティでEnabledやVisibleを設定できました。2007ではどうすればコマンドボタンのプロパティを表示できるのでしょうか?

  • エクセルVBAのボタン操作について

    sheet1にコマンドボタン(CommandButton1)を貼り付けて sheet2にもコマンドボタン(CommandButton1)を貼り付けています。 sheet1のコマンドボタンを押すとVBAで処理をして sheet2を表示後 自動的にsheet2のコマンドボタンにかかれたVBAの処理をしたいのですがうまくいきません。 教えてください。 環境windows2000 office 2000 sheet1のボタンの最後 Sheets("2").Select ActiveSheet.Shapes("CommandButton1").Select でうまくいきません。

  • Excel 全シート上のボタンを削除 VBA

    いつも大変お世話になっております。 Excelのシート上のボタンを削除したいと考えています。 ボタンはVBAで自動で作成してます。 Sub ButtonCreate() With ActiveSheet.Buttons.Add(Range("C1").Left, _ Range("C1").Top, _ Range("C1").Width, _ Range("C1").Height) .Characters.Text = "起動" .Characters.Font.Size = 8 End With End Sub シート上にはグラフ等もあるため、 まとめてオブジェクトを消すという方法は取れません。 ボタンのみを消したいと思っています。 Worksheets("テスト").Activate ActiveSheet.Buttons.Delete と削除する方法を取っていますが、 他に方法はありますか? BOOKを指定し、全シート上の ボタンを削除する方法があれば、知りたいです。 回答よろしくお願い致します。

  • EXCELのVBAにてシート削除の確認を表示させない

    EXCELにてVBAよりシート削除をコーディングしているのですが、 シート削除の確認を表示させない方法は、ありませんか? 例) For Each W_SHEET In Worksheets if W_SHHET.NAME <> "master" Then W_SHEET.DELETE End If Next

  • Excel VBA シート削除の繰り返しにおいて

    EXCEL 2002 シート削除の連続削除において分からない事があるので質問いたします。あるシートのボタンを押すと、そのシートの種族と同じ種族で、種族の子番号が、そのシートよりも大きいものを削除したいと思います。 シート番号 1 スタートページ シート番号 2 種族 1 (textbox1).value 子番号 1 (textbox2).value シート番号 3 種族 2 (textbox1).value 子番号 1 (textbox2).value シート番号 4 種族 2 (textbox1).value 子番号 2 (textbox2).value ← 削除ボタンを押したシート(削除したい) シート番号 5 種族 2 (textbox1).value 子番号 3 (textbox2).value ←削除したい シート番号 6 種族 3 (textbox1).value 子番号 1 (textbox2).value ←削除したくない シートに削除機能を設けると、オートメーションエラーがでてくるので、オートメーションエラーがでないように、標準モジュールに削除プロシージャを作成して、そのプロシージャを呼び出す形をとっています。また、よけいな、注意書き等(削除の時必ずでてきて、連続操作をとめる警告文を防ぐために、 Application.DisplayAlerts = False )を 呼び出すシートモジュールと、呼び出されたモジュールの両方で、設けております。 下記のようにいたしましたが、「オートメーションエラー」のメッセージがでてきて、デバッグ前に実行時のエラーで終わります。 上記の目的を達成するために、オートメーションエラーを表示させずに、無事連続シート削除を達成するにはどうすればよろしいでしょうか。どなたか連続削除の経験等ある方いらっしゃいましたら、お願いいたします。 呼び出すシート側のプロシージャ Private Sub deletebutton_Click() Call delete '削除関数 Application.DisplayAlerts = True End Sub 呼び出された標準モジュール Option Explicit Const worksheets_start As Integer = 2 '削除可能シート番号 (2から削除可能 ' 削除プロシージャ Public Sub delete() Dim no, i, j As Integer Dim ws As Worksheet Application.DisplayAlerts = False ‘余計な警告文をださない。 MsgBox "シートNOを削除いたします。", vbOKCancel If Worksheets.Count < worksheets_start Then ‘シート2以下は削除させない(今回は4から削除 MsgBox "これ以上、削除できるシート番号がありません。" GoTo sayonara Else no = ActiveSheet.Index '削除を指定したページのページ番号取得 i = Worksheets.Count ‘シートの総シート数取得 For j = worksheet_start To Worksheets.Count ‘共通変数のシートスタート( 2 ) '種族2の子番号2以上のシートがあれば、全て削除したい Worksheets(i).Activate   '最終ページにアクティブを移動 If i = worksheets_start Then ' 最終シートからチェック i カウントがスタートページまでいったら終了 Exit For End If If no <> i Then ‘ 削除ボタンを押したシートは念の為消さない If Val(Worksheets(i).TextBox4.Value) = _ Val(Worksheets(no).TextBox4.Value) Then '種族が同じ(同種族) If Val(Worksheets(i).TextBox5.Value) > _ Val(Worksheets(no).TextBox5.Value) Then '同種族の子番号が削除指定したシートの子番号よりも大きい Worksheets(i).delete ‘ 該当シート削除 MsgBox "削除" & I ‘ シートiの削除メッセージ i = i - 1 ‘ シート削除対象を一つ減らす  Else ‘ 子番号が削除ボタンを押したシートの子番号より小さい i = i - 1        End If End If End If Next End If sayonara: Application.DisplayAlerts = True End Sub 参照ページ http://www.big.or.jp/~seto/vbaref/vbaref7.htm​ http://www.relief.jp/itnote/archives/001936.php​ http://oshiete1.goo.ne.jp/qa2782689.html​ みにくくて申し訳ありません。

  • Excel VBA:コントロールボタンのEnabledプロパティーについての質問

    コマンドボタンのEnabledプロパティーを変更したときの挙動が良くわからず 困っており、お教えいただけると幸いです。 Excelのワークシート上にCommandButtonを作り(名前をCommandButton1とします)、 module1に以下のプロシージャを書き、Enabledプロパティーを変化させます。 Sub test() ActiveSheet.CommandButton1.Enabled = Not ActiveSheet.CommandButton1.Enabled MsgBox "here" End Sub 上記のプロシージャに期待したのは、Enabeldの状態が反転した後、 hereの文字が表示されると言うものですが、 実際は先にhereの文字が表示されてしまいます。 また、不思議なことにDoEventsを二つ連続でMsgBoxの前に入れると きちんと動きます。 (ステップ実行でもきちんと動きます。) 最終的には、もっと長いプログラムの中で使う予定なので、 全てのEnabled文の後にDoEventsを二連続で書くという対症療法以外で、 良い解決方法が無いか、お教えいただけると幸いです。 なお、環境はwindowsXP、excel2003です。 よろしくお願いいたします。

  • エクセルVBAでワークシート削除

    ブックの中にある、表示されているシートで、たとえば図表1~図表4(何番まであるかは不定です)という名前のシートを削除するVBAを作りました。ただの「図表」という名前のシートや、「何々図表」、「図表集計」等のシートは削除しません。 Sub 保存図表削除() Dim SN As String For Each sh In Worksheets SN = sh.Name If sh.Visible And IsNumeric(Mid(SN, 3, Len(SN) - 2)) And Left(SN, 2) = "図表" Then ans = MsgBox(SN & "を削除してよい?", vbYesNo) If ans = vbYes Then Application.DisplayAlerts = False sh.Delete Application.DisplayAlerts = True End If End If Next End Sub これでうまく作動するのですが、いちいちシートごとに削除の有無を聞かずに、削除するシート名をまとめて表示し、それらを削除するかしないかを聞くにはどうすればよいでしょうか? 「図表1,2,3,4があります。これらを削除しますか?」というような感じです。

  • コマンドボタンがあるかどうかを取得するには?

    図のようにシートにコマンドボタンがあります。 オブジェクト名は「CommandButton1」です。 vbaでシート上にコマンドボタンがあるかどうかを取得するコードを書きたいのですが、どうすればいいのかわかりません。 MsgBox IsNull(CommandButton1) ではエラーになりました。 ご教授よろしくお願い致します。

専門家に質問してみよう