ワークシート上にフォームで作成したチェックボックス、グループボックス、オプションボタンだけをまとめて削除する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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要 6 2022/09/08 16:41
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- Visual Basic(VBA) FileSearch2007に変わる構文について 1 2022/12/16 16:57
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Excel(エクセル) vbaで列幅について 1 2022/11/15 08:31
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) VBA Bookの表示、非表示 1 2022/09/16 20:44
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- HTML・CSS VS.NETのコードを色合いも含めてHtmlに貼り付けたい。 1 2023/02/02 14:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#,vb.netで業務用アプリ開発と...
-
EXCELでactivexコントロールを...
-
vb.netで画面のコントロールId...
-
カメラスクロールするのを動画...
-
JavaScriptからVBAの関数を呼び...
-
ExcelVBAでListViewが使用できない
-
エクセル・VBA CheckBoxのオブ...
-
(VBA)スピンボタンの大量...
-
エクセル コントロールツール...
-
ACCESS2010のVBAでフォーム内ク...
-
Excelコマンドボタン名を変数に...
-
ユーザーフォームで動的(Me.Con...
-
ExcelVBAのコントロールの種類...
-
With~EndWithの省略部分と引数...
-
VB.NET開発。ラジオボタンとコ...
-
C#で角が丸いテキストボックス
-
C# タブのコントロール取得
-
【VB6】Timerコントロールは何...
-
VB.NET 動的コントロールの存在...
-
コントロールの絶対位置を取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
vb.netで画面のコントロールId...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
(VBA)スピンボタンの大量...
-
エクセルVBAでオプションボタン...
-
C#で角が丸いテキストボックス
-
ユーザーフォームで動的(Me.Con...
-
アクセス特有の書き方?
-
間違えて配置してしまったコン...
-
コンボボックスの文字によるif...
-
VBAのエラーについて、”実行時...
-
変数をコントロール型で使用す...
-
chr関数の呼び出しで「プロ...
-
With~EndWithの省略部分と引数...
-
C#で自分のウインド・ハンド...
-
excelのリストボックスで選択し...
-
'ckbl' コントロールは作成され...
-
フォーム上の現在アクティブな...
おすすめ情報