• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コマンドボタンを削除しないか自動生成する)

コマンドボタンを削除しないか自動生成する

このQ&Aのポイント
  • エクセルのマクロで、不要な表やオブジェクトを一括で削除するためのマクロを作成し、コマンドボタンをシートに作成してマクロを登録しています。
  • コマンドを実行すると、不要な表やオブジェクトと一緒に、マクロを実行するためのコマンドボタンも削除されてしまいます。コマンドボタンを削除されないためにはどうしたらいいでしょうか。
  • あるいは、コマンドボタンを自動で生成し、マクロを登録するにはどうしたらいいでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

フォームのボタンのことですね。 まず、Cells.Delete の時点で、フォームコントロールを含むすべての図形が削除されてしまいますね。 ですので、セルの内容だけを初期化してから、以下のマクロを登録したフォームボタン以外の図形を削除するようにします。 Sub 削除()   Dim shp As Shape   Cells.Clear   For Each shp In ActiveSheet.Shapes   If shp.Name <> ActiveSheet.Shapes(Application.Caller).Name _      Then shp.Delete   Next shp End Sub

promet
質問者

お礼

ありがとうございます。 Application.Caller というのがあるのがわかりました。 あまり、オブジェクトをマクロでしたことがないので、大変勉強になりました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

ShpのTypeで判別しては。 ーー Sub 削除() Dim shp As Shape '--シートの図形 For Each shp In ActiveSheet.Shapes MsgBox shp.Name MsgBox shp.Type If shp.Type = 12 Then shp.Delete End If Next shp '--セルの値 'Cells.Delete End Sub '--- If shp.Type = 12 THENの部分のコードは,tano他のバリエーションは https://qiita.com/AfricaUmare/items/3c4382fd7cc63b76cce9 に載っています。 ーー 当初、開発ー挿入で、ボタンを設定したのなら ・8は、msoFormControlのボタンです ・12はmsoOLEControlObjectのボタンです。 ・その他なのか。 質問には、本当は明記すべき大切な事項です。 ーー >コマンドボタンを自動で生成し、・・ そこまで行かなくても良いのではと思うが。 記事はWEB照会すればすぐ見つかる。 検索語は 「VBA 動的にコマンドボタンを作る」と「動的」を入れることです。 https://www.excel-excel.com/tipsctr/vbac_8.html などを参考に。

promet
質問者

お礼

あまり、ボタンなどを使用したことがなかったので、大変勉強になりました。 もう少し時間をかけて、参照サイトを読んでみます。

関連するQ&A