クリック1つでチェックをつけたり外したりととても便利なチェックボックスですが、マクロを作成することでさらに便利にすることができます。
この記事では、どのようにチェックボックスとマクロと組み合わせていくことができるのか、具体的なコードとともにご紹介します。
この記事では、エクセルでのチェックボックスの作り方や削除方法について解説しています。
チェックボックスを具体的にどのように使うのかといった例も紹介しているので、是非参考にしてみてください。
チェックボックスについては下記の通りまとめ記事もあるのでご参考下さい!
(関連記事):【エクセル】チェックボックスの作り方からマクロ連動まで解説!
マクロでチェックボックスを作成する
チェックボックスを作成するVBAのコード例は下記の通りです。
Sub makecheckbox()
Dim pointX As Double
Dim pointY As Double
Dim pointW As Double
Dim pointH As Double
pointX = Range("B2").Left
pointY = Range("B2").Top
pointW = Range("B2").Width
pointH = Range("B2").Height
ActiveSheet.CheckBoxes.Add(pointX, pointY, pointW, pointH).Select
End Sub
このコードを実行すると、下記の通りB2セル辺りにチェックボックスが作成されます。

簡単に解説しますと、Dim~から始まる最初の部分は変数の宣言です。

4つの変数を、Double型で宣言しています。
VBAのデータ型にどのようなものがあるのか?については下記のページが参考になります。
次に、宣言した変数に値を入れています。B2セルの位置・サイズ情報を入れています。

最後に、変数に入れた情報で指定した場所にチェックボックスを作成しています。

今回はB2セルを指定してピンポイントで作成していますが、変数を使用して繰り返し処理をすることで複数のボックスを一気に作成することも可能です。
例えば、下記のようなコードとなります。
Sub makecheckkbox()
Dim pointX As Double
Dim pointY As Double
Dim pointW As Double
Dim pointH As Double
Dim i As Long
For i = 2 To 5
pointX = Cells(i, 2).Left
pointY = Cells(i, 2).Top
pointW = Cells(i, 2).Width
pointH = Cells(i, 2).Height
ActiveSheet.CheckBoxes.Add(pointX, pointY, pointW, pointH).Select
Next
End Sub
このコードを実行すると、B2セル~B5セルにかけてチェックボックスが複数作成されます。

マクロでチェックボックスのチェックを入れる・外す
マクロを使ってチェックボックスのチェックを入れる・外す操作をすることもできます。
下記のコードで、チェックボックスを一括ON・OFFを実現することが可能です。
Sub checkall()
Dim ckbx As checkbox
For Each ckbx In ActiveSheet.CheckBoxes
If ckbx.Value = xlOn Then
ckbx.Value = xlOff
ElseIf ckbx.Value = xlOff Then
ckbx.Value = xlOn
End If
Next ckbx
End Sub
チェックボックスのチェックが外れた状態でマクロを実行すると、チェックが入ります。

チェックボックスのチェックがついた状態でマクロを実行すると、チェックが外れます。

まとめ
