
ワークシート上にフォームで作成したチェックボックス、グループボックス、オプションボタンだけをまとめて削除するVBAです。
以下のように、種類ごとに分けて記述することは出来るのですが、3種類まとめて書く方法がわかりません。
CheckBoxes,GroupBoxes,OptionButtons と並べてもだめのようです。
ご教示ください。
Sub delete_test()
With ActiveSheet
For Each cb In .CheckBoxes
cb.Delete
Next
For Each gb In .GroupBoxes
gb.Delete
Next
For Each ob In .OptionButtons
ob.Delete
Next
End With
End Sub
No.5
- 回答日時:
merlionXXさん、こんにちは。
Wendy02です。
>オブジェクトに自分で名前を付けてしまったものは削除されないようです。
なるほどね、前回やっていた例の方法ですね。ただ、その方法は、Collection を取らない、コントロールに対して、後々処理するためのもので、必ずしも、フォームのコントロールでは、必要ありませんね。
実際、自分で名前のつけたものに対しては、一括して行うための処理ですから、任意の接頭辞をつけて、それで処理すればよいと思います。そのために名前の変更したのではないでしょうか?
それから、
ActiveSheet.DrawingObjects という設定の仕方は、こちらでは取れますが、これは、バージョンごとで調べていませんので、今は、なんとも言えません。ダメならShapes にすれば済むはずです。
No.4
- 回答日時:
#3のWendy02 です。
私の回答、#1,#2 とも全部かぶっていますね。Goup Boxのチェックで、他のコントロールと前後関係があるのではないかと調べ、また、Like演算子のマルチ化ができないかと思いましたが、前者は、それが前後関係はなかったことと、後者は、可能なのですが正規表現ではないので確実性が乏しいということで断念した、その結果が#3です。
特別な付加的条件がなければ、基本的には、#2 さんので良いと思います。
No.3
- 回答日時:
merlionXX さん、こんにちは。
3種類まとめてというのは、ひとつのFor Each In ~で行うということですか?
もともと、Collection で扱うようになっていますから、以下のようにすればよいと思います。
Sub delete_test2()
With ActiveSheet
.CheckBoxes.Delete
.GroupBoxes.Delete
.OptionButtons.Delete
End With
End Sub
それとも、こんな風にしますか?(^^;
Sub delete_test3()
Dim obj As Object, nm As Variant
With ActiveSheet
For Each obj In .DrawingObjects
For Each nm In Array("Check", "Option", "Group")
If obj.Name Like nm & "*" Then
obj.Delete
End If
Next nm
Next obj
End With
End Sub
ありがとうございます。
名前を付けたチェックボックスのところで「Nameプロパティが取得できません」というエラーになってしまいました。
No.1
- 回答日時:
全てのオブジェクトを対象にif文で判断します。
Sub test()
With ActiveSheet
For Each cb In .Shapes
If InStr(cb.Name, "Group Box") Or _
InStr(cb.Name, "Option Button") Or _
InStr(cb.Name, "Check Box") Then cb.Delete
Next
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAのコントロールの種類...
-
複数のコマンドボタン(VBAで)...
-
全てのオブジェクトのプロパテ...
-
Pictureコントロールの...
-
winndws セキュリティ
-
VBAのカレンダーコントロールに...
-
VB.net webアプリケーションで...
-
WEBユーザーコントロール
-
エクセルVBAユーザーフォーム・...
-
エクセルVBAでオプションボタン...
-
C#で角が丸いテキストボックス
-
JavaScriptからVBAの関数を呼び...
-
Excel VBA 動的に作成したチェ...
-
エクスプローラ風のフォルダ選...
-
ユーザーフォームにランプをつ...
-
ASP.NET(C#)実体のないコントロ...
-
行方不明になるコントロール
-
カメラスクロールするのを動画...
-
MSFlexGridのようなコントロール
-
ユーザーコントロールのイベン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAのコントロールの種類...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
'ckbl' コントロールは作成され...
-
カメラスクロールするのを動画...
-
VBA ユーザーフォームの Keypre...
-
vb.netで画面のコントロールId...
-
エクセル・VBA CheckBoxのオブ...
-
chr関数の呼び出しで「プロ...
-
エクセルVBAでオプションボタン...
-
Groupboxの配下のコントロール...
-
エクセル コントロールツール...
-
Labelコントロールの(左右)余...
-
チェックボックスをオンにした...
-
Excel VBA で Richtextboxを使...
-
アクセス特有の書き方?
-
(VBA)スピンボタンの大量...
-
ActiveX DLL と ActiveXコント...
-
C# ユーザコントロール内のボタ...
-
Excel VBA 動的に作成したチェ...
おすすめ情報