【Excel VBA】複数のチェックボックスを一瞬で削除する方法!部分選択削除も!

Excel VBAで複数のチェックボックスを一度で削除したいときはないでしょうか。

けど、そんな中で悩むことは、

・Excelでチェックボックスを一つ一選択しなければならず面倒。
・VBAで効率的に行いたいがやり方がわからない。

ですよね。

今回はそんなお悩みを解決する
Excel VBAで複数のチェックボックスを一度で削除する方法について
まとめます!


Excel でチェックボックスを削除する基本操作

Excel でチェックボックスを削除する基本操作について説明をします。
「オブジェクトの選択」を使い、選択したチェックボックスを削除していきます。

[ホーム]タブから「オブジェクトの選択」を選択する

[ホーム]タブから「オブジェクトの選択」を選択します。

削除したいチェックボックスを選択する

削除したいチェックボックスを選択します。

タカヒロ
タカヒロ
「オブジェクトの選択」をしなくても右クリックで選択可能です。ただしメニューも表示されます。

チェックボックスを削除する

削除したいチェックボックスを選択したらキーボードのDeleteキーを押します。

削除できましたね。

タカヒロ
タカヒロ
[Ctrl]+[A]で全選択の上[Delete]で一括削除が可能ですが、この場合図形や画像も削除されますので、ご注意ください。



シートにあるすべてのチェックボックスを一度で削除するVBA

次はこれまで手動で行ってきたチェックボックスの選択と削除をVBAで一度に処理していきます。

一つ目は現在選択しているシートに存在するチェックボックスを対象に削除処理をこないます。

タカヒロ
タカヒロ
図形や画像などその他のオブジェクトが混在していてもチェックボックスだけが削除対象となります。

VBAは以下となります。

Sub シート内のチェックボックスを削除する()
    Dim objCheckbox As CheckBox
    
    Application.ScreenUpdating = False
    
    'シート内の全チェックボックスを取得し、削除する
    For Each objCheckbox In ActiveSheet.CheckBoxes
            objCheckbox.Delete
    Next chkBox
    
    Application.ScreenUpdating = True
    
End Sub

VBAを実行します。
削除したいチェックボックスがあるシートを選択し、マクロから「シート内のチェックボックスを削除する」を選択し実行します。

タカヒロ
タカヒロ
VBAの実装方法や実行手順については以下の項目をご参照ください。

一瞬でできましたね!

VBAの説明

シート内の全チェックボックスを取得し、Deleteメソッドで削除します。
For Each objCheckbox In ActiveSheet.CheckBoxes
objCheckbox.Delete
Next



選択したセルに存在するチェックボックスを削除するVBA

二つ目は選択したセルに存在した場合のみ削除をするVBAとなります。

VBAは以下となります。

Sub 選択範囲に含まれるチェックボックスを削除する()

    Dim objCell As Object
    Dim objCheckbox As CheckBox
    '選択した範囲分のオブジェクトを取得します
    For Each objCell In Selection
        With objCell
            For Each objCheckbox In ActiveSheet.CheckBoxes
                '選択した範囲にチェックボックスオブジェクトが含まれていたら削除します
                If Not Application.Intersect(objCheckbox.TopLeftCell, objCell) Is Nothing Then
                    objCheckbox.Delete
                End If
            Next
        End With
    Next
    
End Sub

タカヒロ
タカヒロ
手動で選択する場合はチェックボックスオブジェクトが対象でしたが、VBAではチェックボックスが配置されている位置にあるセルが選択の対象となります。

横方向に選択したセルに存在するチェックボックスを削除する

横方向に選択したセルに存在するチェックボックスを削除します。

できましたね。

縦方向に選択したセルに存在するチェックボックスを削除する

縦方向に選択したセルに存在するチェックボックスを削除します。

できましたね。

飛び飛びで範囲選択したセルに存在するチェックボックスを削除する

次は縦、縦方向にランダムで選択したセルに存在するチェックボックスを削除します。

できましたね。

VBAの説明

今回のVBAについて説明します。

二種類のVBAの違いは削除対象がシート全体のチェックボックスか、選択セル範囲にあるチェックボックスかの違いのみになります。

選択した範囲分のオブジェクトを取得します。
For Each objCell In Selection

選択した範囲にIntersectメソッドによって、チェックボックスオブジェクトの左上の座標が選択したセルの座標内に含まれていたら削除します
If Not Application.Intersect(objCheckbox.TopLeftCell, objCell) Is Nothing Then
objCheckbox.Delete
End If



VBAの実装手順

実装手順は以下の通りです。

今回はExcel側にこのVBAを実装します。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。
※完了メッセージやステータス管理など必要に応じて実装してもらえばと思います。


さいごに

いかがでしょうか。

今回は、
Excel VBAで複数のチェックボックスを一度で削除する方法について
まとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です