【エクセルマクロ】セル内のチェックボックスの有無を判定する

vba-セル内のチェックボックスの有無を確認-アイキャッチ ExcelVBA

エクセルマクロで、セル内のチェックボックスの有無を確認するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひ、お試しください。

セル内のチェックボックスの有無を判定(パターン①)

以下のExcelVBAを実行すると、セル上のチェックボックス有無を判定します。


Sub チェックボックスがセル上にあるかどうか判定()

Dim cb As checkbox
Dim x As Long
Dim i As Long
Dim j As Long
Dim a(18) As Variant

    'すでにチェックボックスがある行番号を配列格納
    i = 1
    For Each cb In ActiveSheet.CheckBoxes
        a(i) = Split(cb.TopLeftCell.Address, "$")(2)
        i = i + 1
    Next cb
    
    'B列 2~4行目までループ
    For i = 2 To 4
    
        '判定用
        x = 0
    
        '配列ループ
        For j = 1 To UBound(a)
        
            'セルにチェックボックスがあるか確認
            If i = Int(a(j)) Then
                x = 1
                Exit For
            End If
         Next j
         
         '判定結果をセルへ転記
         If x = 0 Then
            Cells(i, 3) = "無し"
         Else
            Cells(i, 3) = "有り"
         End If

    Next i

End Sub
マクロ実行後

B列のチェックボックス有無を取得し、結果をC列へ表示します。


 

補足

チェックボックスのオブジェクトの左上端が、

セル内に収まっている状態でマクロを実行してください。


 
 

セル内のチェックボックスの有無を判定(パターン②)

以下のExcelVBAを実行すると、セル上のチェックボックス有無を判定して、なければチェックボックスを挿入します。


Sub チェックボックスがセル上にあるか判定して挿入()

Dim cb As checkbox
Dim x As Long
Dim i As Long
Dim j As Long
Dim a(18) As Variant
Dim StartX As Single
Dim StartY As Single
Dim EndX As Single
Dim EndY As Single

    'すでにチェックボックスがある行番号を配列格納
    i = 1
    For Each cb In ActiveSheet.CheckBoxes
        a(i) = Split(cb.TopLeftCell.Address, "$")(2)
        i = i + 1
    Next cb
    
    'B列 2~18行目までループ
    For i = 2 To 18
    
        '判定用
        x = 0
    
        '配列ループ
        For j = 1 To UBound(a)
        
            'すでにチェックボックスがあれば、チェックボックスを追加しない
            If i = Int(a(j)) Then
                x = 1
                Exit For
            End If
         Next j
         
         'チェックボックスがない行に、チェックボックスを追加する
         If x = 0 Then
         
            With Cells(i, 2)
                StartX = .Left + .Width / 2 - 8
                StartY = .Top
                EndX = .Left - .Left
                EndY = .Height
        
                'チェックボックス作る
                ActiveSheet.CheckBoxes.Add(StartX, StartY, EndX, EndY).Select
        
                'チェックボックスのテキストを指定
                Selection.Text = ""
        
                'セルに合わせて移動やサイズを変更する
                Selection.Placement = xlMoveAndSize
        
            End With
         End If
    Next i

End Sub
マクロ実行後

B列でチェックボックスがないセルに、チェックボックスを挿入します。


 

補足

チェックボックスのオブジェクトの左上端は、

すべてセル内に収まっている状態です。


 
 
この記事がお役に立ちますと幸いです。
 
・【エクセルマクロ】チェックボックス処理を自動化まとめ
 

【エクセルマクロ】チェックボックスを自動操作:使用例16選
...

 

「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説