エクセルシートで使う場合の、2種類あるチェックボックスの設置と使い方の違いを解説します。
一見簡単そうですが、単純でない使い方をしたい時は、設置方法と設定方法を工夫する必要があります。
こんにちは、じゅんぱ店長(@junpa33)です。
今回はワークシートにチェックボタンを設置する方法についてです。
使って便利なチェックボックス。
皆さんも作成中のエクセル帳票で使いたいと、思われることが多いのではないでしょうか。
- コントロールの配置
- チェックボックスのシート設置
- コマンドボタンのシート設置
- オプションボタンのシート設置記事編成
- ActiveXとフォームの両コントロールのオプションボタンをエクセルシートに手動設置する
- フォームコントロールのオプションボタンをエクセルシートにVBA配置する
- オプションボタンの設置手順
コンテンツ
チェックボックスをワークシートへ設置する
エクセルで帳票を作成するときに、何かの条件をON・OFFするときに
オプションボタンと同じようにスイッチングできる「チェックボックスがあると便利かも」
と感じたことはないでしょうか。
この記事では、
クリック一つで、使用条件を選択できるチェックボックスのワークシートへの導入方法を説明していきます。
チェックボックスには2種類ある。設置方法と使い方
オプションボタンと同様に、チェックボックスでも2種類のタイプがあります。
「フォームコントロール」のタイプと「ActiveX」の2つのタイプです。
フォームコントロールのチェックボックスの場合
フォームコントロールのチェックボックスの設置方法
「開発」タブから「挿入」を選択します。
フォームコントロールでチェックボックスを選択します。
シートにチェックボックスを設置しました。
複数設置するのに、右クリックメニューでコピーを選択します。
ペーストで8個のチェックボックスを設置しました。
フォームコントロールのチェックボックスの設定方法
設置した8個のチェックボックスは、それぞれ、ON・OFFどちらかを選択できます。
右クリックメニューで「テキストの編集」を選択します。
例えばこのように変更してみました。
右クリックメニューで「マクロの登録」を選択します。
ダイヤログで新規作成をクリックします。
同様の作業を8個のチェックボックスに行っていきます。
Module1を開くとオプションボタンのプロシージャーが記述されています。
フォームコントロールのチェックボックスの場合は、VBAコードが標準モジュールに記録されます。
チェックボックスの右クリックメニューで「コントロールの書式設定」を選択します。
コントロールの書式設定の「コントロール」タブで、
「リンクするセル」をチェックボックスを置いたセルに指定します。
リンクするセルを指定することで、そのセルチェックボックスの状態を表示することが出来ます。
表示が邪魔にならないように、セル色同色にして疑似アンヴィジュアルにしておきましょう。
チェックボックスの下のセルに表示を置くことで、間違っての表示の削除の防止にもなります。
チェックボックスON → 「True」
チェックボックスOFF → 「False」
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
チェックボックスを選択した時、選択した項目が表示されます。
ActiveXのチェックボックスの場合
ActiveXのチェックボックスの設置方法
「開発」タブから「挿入」を選択します。
ActiveXでチェックボックスを選択します。
シートにチェックボックスを設置しました。
複数設置するのに、右クリックメニューでコピーを選択します。
ペーストで8個のチェックボックスを設置しました。
ActiveXのチェックボックスの設定方法
設置した8個のチェックボックスは、それぞれ、ON・OFFどちらかを選択できます。(デフォルトの設定です。)
右クリックメニューで「プロパティ」を選択します。
「Caption」の項目で「野球」と変更します。
同様にほか7つのオプションボタンのプロパティのCaptionの値も変更していきます
8つのチェックボックスのCaptionをこのようにセットしました。
「野球」のチェックボックスを
「デザインモードON」の状態の時にダブルクリックをします。
VBEが起動しシートモジュールに(今回の場合はSheet2)空のプロシージャーが記述されます。
POINT
- ActiveXのチェックボックスの場合は、基本、シートモジュールにイベントコードが記述されます。
- シートモジュールのイベントコードは、イベントが発生したときに実行されます。ですので、オプションボタンはクリックされないとイベントコードは実行されません。
同様に8つのチェックボックスに行っていきます。
セル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」を変更すれば、それに対応して自動的に表示も変更されます。
チェックボックスをグループ分けすることが出来ます。
「この場面では、このチェックボックスの選択を不可にしておきたい!」
というようなことが出来るようになります。
プロパティから設定できるのはActiveXのチェックボックスのみの機能です。
グループ分けで「すき」と「ちょっとすき」を作ります。
チェックボックス「野球」は「すき」とします。
チェックボックス「バスケットボール」は「ちょっとすき」とします。
ほか、
- 「サッカー」→「すき」
- 「バレーボール」→「ちょっとすき」
- 「ゴルフ」→「すき」
- 「卓球」→「ちょっとすき」
- 「ラグビー」→「すき」
- 「ソフトボール」→「ちょっとすき」
という設定をしました。
チェックボックスを使用可にするグループ名を指定する入力セル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
エクセルシート的にはこのように表示されます。
全体のコードはこのようになります。
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種類のチェックボックスの設置と使い方のまとめ
ここまで、チェックボックスの設置方法と使い方を説明してきました。
このようにチェックボックスには2つの種類があり、設置方法もいくつかの点で違ったものになっています。
また使い方の点で異なる部分もありますので、用途を理解して使うことが必要な場合もあるかもしれません。
特に、グループ別にチェックボックスを使いたい場合は、ActiveXのチェックボックスを利用する方が良いと思います。
エクセルVBAのコントロールについて知識を増やす
概してですが、
「フォームコントロール」タイプのものはそれほど多種類の機能があるわけではありません。
逆にその分、簡単に設置でき、より使いやすくはあると思います。
「ActiveX」タイプのものはプロパティがあるため、いろいろな設定が可能で、その分より知識が必要になります。
このプロパティの設定方法については、多くのことをを解説している参考資料は多くないです。
ですので、自分で一度設置して、操作のトライアンドエラーを行ってみることが一番かもしれません。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。