エクセルシートで使う場合の、2種類あるチェックボックスの設置と使い方の違いを解説します。
一見簡単そうですが、単純でない使い方をしたい時は、設置方法と設定方法を工夫する必要があります。
こんにちは、じゅんぱ店長(@junpa33)です。
今回はワークシートにチェックボタンを設置する方法についてです。
使って便利なチェックボックス。
皆さんも作成中のエクセル帳票で使いたいと、思われることが多いのではないでしょうか。
- コントロールの配置
- チェックボックスのシート設置
- コマンドボタンのシート設置
- オプションボタンのシート設置記事編成
- ActiveXとフォームの両コントロールのオプションボタンをエクセルシートに手動設置する
- フォームコントロールのオプションボタンをエクセルシートにVBA配置する
- オプションボタンの設置手順
コンテンツ
チェックボックスをワークシートへ設置する
![VBACheckBoxp030](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBoxp030.jpg)
エクセルで帳票を作成するときに、何かの条件をON・OFFするときに
オプションボタンと同じようにスイッチングできる「チェックボックスがあると便利かも」
と感じたことはないでしょうか。
この記事では、
クリック一つで、使用条件を選択できるチェックボックスのワークシートへの導入方法を説明していきます。
チェックボックスには2種類ある。設置方法と使い方
![VBACheckBoxp031](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBoxp031.jpg)
オプションボタンと同様に、チェックボックスでも2種類のタイプがあります。
「フォームコントロール」のタイプと「ActiveX」の2つのタイプです。
フォームコントロールのチェックボックスの場合
フォームコントロールのチェックボックスの設置方法
「開発」タブから「挿入」を選択します。
![VBACheckBox001b](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox001b.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
フォームコントロールでチェックボックスを選択します。
![VBACheckBox002a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox002a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
シートにチェックボックスを設置しました。
![VBACheckBox003a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox003a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
複数設置するのに、右クリックメニューでコピーを選択します。
![VBACheckBox004a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox004a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
ペーストで8個のチェックボックスを設置しました。
![VBACheckBox005a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox005a.jpg)
フォームコントロールのチェックボックスの設定方法
設置した8個のチェックボックスは、それぞれ、ON・OFFどちらかを選択できます。
右クリックメニューで「テキストの編集」を選択します。
![VBACheckBox006a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox006a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
例えばこのように変更してみました。
![VBACheckBox007a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox007a.jpg)
右クリックメニューで「マクロの登録」を選択します。
![VBACheckBox008a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox008a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
ダイヤログで新規作成をクリックします。
![VBACheckBox009a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox009a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
同様の作業を8個のチェックボックスに行っていきます。
![VBACheckBox010a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox010a.jpg)
Module1を開くとオプションボタンのプロシージャーが記述されています。
フォームコントロールのチェックボックスの場合は、VBAコードが標準モジュールに記録されます。
![VBACheckBox011a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox011a.jpg)
チェックボックスの右クリックメニューで「コントロールの書式設定」を選択します。
![VBACheckBox012a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox012a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
コントロールの書式設定の「コントロール」タブで、
「リンクするセル」をチェックボックスを置いたセルに指定します。
![VBACheckBox013a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox013a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
リンクするセルを指定することで、そのセルチェックボックスの状態を表示することが出来ます。
表示が邪魔にならないように、セル色同色にして疑似アンヴィジュアルにしておきましょう。
チェックボックスの下のセルに表示を置くことで、間違っての表示の削除の防止にもなります。
チェックボックスON → 「True」
![VBACheckBox014](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox014.jpg)
チェックボックスOFF → 「False」
![VBACheckBox015](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox015.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
Sub チェック1_Click()
'文字表示色を白色に設定
Range("B3").Font.ColorIndex = 2
'クリックした時と外した時の条件分岐
If Range("B3").Value = True Then
Range("G3").Value = "野球"
Else
Range("G3").Value = ""
End If
End Sub
コード全体はこのような感じです。
Option Explicit
Sub チェック1_Click()
'文字表示色を白色に設定
Range("B3").Font.ColorIndex = 2
'クリックした時と外した時の条件分岐
If Range("B3").Value = True Then
Range("G3").Value = "野球"
Else
Range("G3").Value = ""
End If
End Sub
Sub チェック2_Click()
Range("B5").Font.ColorIndex = 2
If Range("B5").Value = True Then
Range("G5").Value = "サッカー"
Else
Range("G5").Value = ""
End If
End Sub
Sub チェック4_Click()
Range("B7").Font.ColorIndex = 2
If Range("B7").Value = True Then
Range("G7").Value = "バスケットボール"
Else
Range("G7").Value = ""
End If
End Sub
Sub チェック5_Click()
Range("B9").Font.ColorIndex = 2
If Range("B9").Value = True Then
Range("G9").Value = "バレーボール"
Else
Range("G9").Value = ""
End If
End Sub
Sub チェック7_Click()
Range("E3").Font.ColorIndex = 2
If Range("E3").Value = True Then
Range("H3").Value = "ゴルフ"
Else
Range("H3").Value = ""
End If
End Sub
Sub チェック8_Click()
Range("E5").Font.ColorIndex = 2
If Range("E5").Value = True Then
Range("H5").Value = "卓球"
Else
Range("H5").Value = ""
End If
End Sub
Sub チェック10_Click()
Range("E7").Font.ColorIndex = 2
If Range("E7").Value = True Then
Range("H7").Value = "ラグビー"
Else
Range("H7").Value = ""
End If
End Sub
Sub チェック11_Click()
Range("E9").Font.ColorIndex = 2
If Range("E9").Value = True Then
Range("H9").Value = "ソフトボール"
Else
Range("H9").Value = ""
End If
End Sub
チェックボックスを選択した時、選択した項目が表示されます。
![VBACheckBox016a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox016a.jpg)
ActiveXのチェックボックスの場合
ActiveXのチェックボックスの設置方法
「開発」タブから「挿入」を選択します。
![VBACheckBox001b](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox001b.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
ActiveXでチェックボックスを選択します。
![VBACheckBox017a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox017a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
シートにチェックボックスを設置しました。
![VBACheckBox018a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox018a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
複数設置するのに、右クリックメニューでコピーを選択します。
![VBACheckBox019a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox019a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
ペーストで8個のチェックボックスを設置しました。
![VBACheckBox020a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox020a.jpg)
ActiveXのチェックボックスの設定方法
設置した8個のチェックボックスは、それぞれ、ON・OFFどちらかを選択できます。(デフォルトの設定です。)
右クリックメニューで「プロパティ」を選択します。
![VBACheckBox021a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox021a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
「Caption」の項目で「野球」と変更します。
同様にほか7つのオプションボタンのプロパティのCaptionの値も変更していきます
![VBACheckBox022a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox022a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
8つのチェックボックスのCaptionをこのようにセットしました。
![VBACheckBox023a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox023a.jpg)
「野球」のチェックボックスを
「デザインモードON」の状態の時にダブルクリックをします。
VBEが起動しシートモジュールに(今回の場合はSheet2)空のプロシージャーが記述されます。
POINT
- ActiveXのチェックボックスの場合は、基本、シートモジュールにイベントコードが記述されます。
- シートモジュールのイベントコードは、イベントが発生したときに実行されます。ですので、オプションボタンはクリックされないとイベントコードは実行されません。
![VBACheckBox024a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox024a.jpg)
![矢印下001](https://shimaydo.com/wp-content/uploads/2020/01/e7edb52c8768b983f3c57c2831b3f9ea.png)
同様に8つのチェックボックスに行っていきます。
![VBACheckBox025a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox025a.jpg)
セルG3にオプションボタンで選択したCaptionを表示させます。
Private Sub CheckBox1_Click()
'クリックした時と外した時の条件分岐
If CheckBox1.Value = True Then
Range("G3").Value = CheckBox1.Caption
Else
Range("G3").Value = ""
End If
End Sub
同様に残り7つのチェックボックスのVBAコードも記述します。
Option Explicit
Private Sub CheckBox1_Click()
'クリックした時と外した時の条件分岐
If CheckBox1.Value = True Then
Range("G3").Value = CheckBox1.Caption
Else
Range("G3").Value = ""
End If
End Sub
Private Sub CheckBox2_Click()
If CheckBox2.Value = True Then
Range("G5").Value = CheckBox2.Caption
Else
Range("G5").Value = ""
End If
End Sub
Private Sub CheckBox3_Click()
If CheckBox3.Value = True Then
Range("G7").Value = CheckBox3.Caption
Else
Range("G7").Value = ""
End If
End Sub
Private Sub CheckBox4_Click()
If CheckBox4.Value = True Then
Range("G9").Value = CheckBox4.Caption
Else
Range("G9").Value = ""
End If
End Sub
Private Sub CheckBox5_Click()
If CheckBox5.Value = True Then
Range("H3").Value = CheckBox5.Caption
Else
Range("H3").Value = ""
End If
End Sub
Private Sub CheckBox6_Click()
If CheckBox6.Value = True Then
Range("H5").Value = CheckBox6.Caption
Else
Range("H5").Value = ""
End If
End Sub
Private Sub CheckBox7_Click()
If CheckBox7.Value = True Then
Range("H7").Value = CheckBox7.Caption
Else
Range("H7").Value = ""
End If
End Sub
Private Sub CheckBox8_Click()
If CheckBox8.Value = True Then
Range("H9").Value = CheckBox8.Caption
Else
Range("H9").Value = ""
End If
End Sub
チェックボックスをクリックすると、指定のセルに選択名が表示されます。
チェックボックスのプロパティの「Caption」を表示しますので、
この「Caption」を変更すれば、それに対応して自動的に表示も変更されます。
![VBACheckBox026a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox026a.jpg)
チェックボックスをグループ分けすることが出来ます。
「この場面では、このチェックボックスの選択を不可にしておきたい!」
というようなことが出来るようになります。
プロパティから設定できるのはActiveXのチェックボックスのみの機能です。
グループ分けで「すき」と「ちょっとすき」を作ります。
チェックボックス「野球」は「すき」とします。
![VBACheckBox027a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox027a.jpg)
チェックボックス「バスケットボール」は「ちょっとすき」とします。
![VBACheckBox028a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox028a.jpg)
ほか、
- 「サッカー」→「すき」
- 「バレーボール」→「ちょっとすき」
- 「ゴルフ」→「すき」
- 「卓球」→「ちょっとすき」
- 「ラグビー」→「すき」
- 「ソフトボール」→「ちょっとすき」
という設定をしました。
チェックボックスを使用可にするグループ名を指定する入力セルB13(グループ選択セル)を設置します。
最初にグループ名があっているかどうかを判断します。
合っていなければ、Caption表示を空白にして、チェックボックスをOFFにしてプロシージャーを終了します。
Private Sub CheckBox1_Click()
'グループ名が一致するかどうかを判断する。合わなければ終了
If CheckBox1.GroupName <> Worksheets("Sheet2").Range("B13") Then
Range("G3").Value = ""
CheckBox1.Value = False
Exit Sub
End If
'クリックした時と外した時の条件分岐
If CheckBox1.Value = True Then
Range("G3").Value = CheckBox1.Caption
Else
Range("G3").Value = ""
End If
End Sub
Private Sub CheckBox3_Click()
'グループ名が一致するかどうかを判断する。合わなければ終了
If CheckBox3.GroupName <> Worksheets("Sheet2").Range("B13") Then
Range("G7").Value = ""
CheckBox3.Value = False
Exit Sub
End If
'クリックした時と外した時の条件分岐
If CheckBox3.Value = True Then
Range("G7").Value = CheckBox3.Caption
Else
Range("G7").Value = ""
End If
End Sub
エクセルシート的にはこのように表示されます。
![VBACheckBox029a](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBox029a.jpg)
全体のコードはこのようになります。
Option Explicit
Private Sub CheckBox1_Click()
'グループ名が一致するかどうかを判断する。合わなければ終了
If CheckBox1.GroupName <> Worksheets("Sheet2").Range("B13") Then
Range("G3").Value = ""
CheckBox1.Value = False
Exit Sub
End If
'クリックした時と外した時の条件分岐
If CheckBox1.Value = True Then
Range("G3").Value = CheckBox1.Caption
Else
Range("G3").Value = ""
End If
End Sub
Private Sub CheckBox2_Click()
If CheckBox2.GroupName <> Worksheets("Sheet2").Range("B13") Then
Range("G5").Value = ""
CheckBox2.Value = False
Exit Sub
End If
If CheckBox2.Value = True Then
Range("G5").Value = CheckBox2.Caption
Else
Range("G5").Value = ""
End If
End Sub
Private Sub CheckBox3_Click()
'グループ名が一致するかどうかを判断する。合わなければ終了
If CheckBox3.GroupName <> Worksheets("Sheet2").Range("B13") Then
Range("G7").Value = ""
CheckBox3.Value = False
Exit Sub
End If
'クリックした時と外した時の条件分岐
If CheckBox3.Value = True Then
Range("G7").Value = CheckBox3.Caption
Else
Range("G7").Value = ""
End If
End Sub
Private Sub CheckBox4_Click()
If CheckBox4.GroupName <> Worksheets("Sheet2").Range("B13") Then
Range("G9").Value = ""
CheckBox4.Value = False
Exit Sub
End If
If CheckBox4.Value = True Then
Range("G9").Value = CheckBox4.Caption
Else
Range("G9").Value = ""
End If
End Sub
Private Sub CheckBox5_Click()
If CheckBox5.GroupName <> Worksheets("Sheet2").Range("B13") Then
Range("H3").Value = ""
CheckBox5.Value = False
Exit Sub
End If
If CheckBox5.Value = True Then
Range("H3").Value = CheckBox5.Caption
Else
Range("H3").Value = ""
End If
End Sub
Private Sub CheckBox6_Click()
If CheckBox6.GroupName <> Worksheets("Sheet2").Range("B13") Then
Range("H5").Value = ""
CheckBox6.Value = False
Exit Sub
End If
If CheckBox6.Value = True Then
Range("H5").Value = CheckBox6.Caption
Else
Range("H5").Value = ""
End If
End Sub
Private Sub CheckBox7_Click()
If CheckBox7.GroupName <> Worksheets("Sheet2").Range("B13") Then
Range("H7").Value = ""
CheckBox7.Value = False
Exit Sub
End If
If CheckBox7.Value = True Then
Range("H7").Value = CheckBox7.Caption
Else
Range("H7").Value = ""
End If
End Sub
Private Sub CheckBox8_Click()
If CheckBox8.GroupName <> Worksheets("Sheet2").Range("B13") Then
Range("H9").Value = ""
CheckBox8.Value = False
Exit Sub
End If
If CheckBox8.Value = True Then
Range("H9").Value = CheckBox8.Caption
Else
Range("H9").Value = ""
End If
End Sub
2種類のチェックボックスの設置と使い方のまとめ
![VBACheckBoxp032](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBoxp032.jpg)
ここまで、チェックボックスの設置方法と使い方を説明してきました。
このようにチェックボックスには2つの種類があり、設置方法もいくつかの点で違ったものになっています。
また使い方の点で異なる部分もありますので、用途を理解して使うことが必要な場合もあるかもしれません。
特に、グループ別にチェックボックスを使いたい場合は、ActiveXのチェックボックスを利用する方が良いと思います。
エクセルVBAのコントロールについて知識を増やす
![VBACheckBoxp033](https://shimaydo.com/wp-content/uploads/2021/06/VBACheckBoxp033.jpg)
概してですが、
「フォームコントロール」タイプのものはそれほど多種類の機能があるわけではありません。
逆にその分、簡単に設置でき、より使いやすくはあると思います。
「ActiveX」タイプのものはプロパティがあるため、いろいろな設定が可能で、その分より知識が必要になります。
このプロパティの設定方法については、多くのことをを解説している参考資料は多くないです。
ですので、自分で一度設置して、操作のトライアンドエラーを行ってみることが一番かもしれません。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
![vbastudyeyecatch2](https://shimaydo.com/wp-content/uploads/2022/01/vbastudyeyecatch2-160x120.jpg)
今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。