シートへの【2種類のチェックボックス】の設置と使い方の違い

VBACheckBoxeyecatch

エクセルシートで使う場合の、2種類あるチェックボックスの設置と使い方の違いを解説します。
一見簡単そうですが、単純でない使い方をしたい時は、設置方法と設定方法を工夫する必要があります。

こんにちは、じゅんぱ店長(@junpa33)です。

今回はワークシートにチェックボタンを設置する方法についてです。

使って便利なチェックボックス。

皆さんも作成中のエクセル帳票で使いたいと、思われることが多いのではないでしょうか。

チェックボックスをワークシートへ設置する

VBACheckBoxp030

エクセルで帳票を作成するときに、何かの条件をON・OFFするときに

オプションボタンと同じようにスイッチングできる「チェックボックスがあると便利かも」

と感じたことはないでしょうか。

この記事では、

クリック一つで、使用条件を選択できるチェックボックスのワークシートへの導入方法を説明していきます。

チェックボックスには2種類ある。設置方法と使い方

VBACheckBoxp031

オプションボタンと同様に、チェックボックスでも2種類のタイプがあります。

「フォームコントロール」のタイプと「ActiveX」の2つのタイプです。

フォームコントロールのチェックボックスの場合

フォームコントロールのチェックボックスの設置方法

「開発」タブから「挿入」を選択します。

VBACheckBox001b
矢印下001

フォームコントロールでチェックボックスを選択します。

VBACheckBox002a
矢印下001

シートにチェックボックスを設置しました。

VBACheckBox003a
矢印下001

複数設置するのに、右クリックメニューでコピーを選択します。

VBACheckBox004a
矢印下001

ペーストで8個のチェックボックスを設置しました。

VBACheckBox005a

フォームコントロールのチェックボックスの設定方法

設置した8個のチェックボックスは、それぞれ、ON・OFFどちらかを選択できます。

手順1
チェックボックス「テキスト」名を変更

右クリックメニューで「テキストの編集」を選択します。

VBACheckBox006a
矢印下001

例えばこのように変更してみました。

VBACheckBox007a
手順2
マクロの登録

右クリックメニューで「マクロの登録」を選択します。

VBACheckBox008a
矢印下001

ダイヤログで新規作成をクリックします。

VBACheckBox009a
矢印下001

同様の作業を8個のチェックボックスに行っていきます。

VBACheckBox010a
手順3
VBEを開きます。

Module1を開くとオプションボタンのプロシージャーが記述されています。

フォームコントロールのチェックボックスの場合は、VBAコードが標準モジュールに記録されます。

VBACheckBox011a
手順4
表示に必要なVBAコードの組み立て

チェックボックスの右クリックメニューで「コントロールの書式設定」を選択します。

VBACheckBox012a
矢印下001

コントロールの書式設定の「コントロール」タブで、

「リンクするセル」をチェックボックスを置いたセルに指定します。

VBACheckBox013a
矢印下001

リンクするセルを指定することで、そのセルチェックボックスの状態を表示することが出来ます。

表示が邪魔にならないように、セル色同色にして疑似アンヴィジュアルにしておきましょう。

チェックボックスの下のセルに表示を置くことで、間違っての表示の削除の防止にもなります。

チェックボックスON → 「True」

VBACheckBox014

チェックボックスOFF → 「False」

VBACheckBox015
矢印下001
VBA
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

コード全体はこのような感じです。

VBA
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
手順5
チェックボックスの選択時の表示

チェックボックスを選択した時、選択した項目が表示されます。

VBACheckBox016a

ActiveXのチェックボックスの場合

ActiveXのチェックボックスの設置方法

「開発」タブから「挿入」を選択します。

VBACheckBox001b
矢印下001

ActiveXでチェックボックスを選択します。

VBACheckBox017a
矢印下001

シートにチェックボックスを設置しました。

VBACheckBox018a
矢印下001

複数設置するのに、右クリックメニューでコピーを選択します。

VBACheckBox019a
矢印下001

ペーストで8個のチェックボックスを設置しました。

VBACheckBox020a

ActiveXのチェックボックスの設定方法

設置した8個のチェックボックスは、それぞれ、ON・OFFどちらかを選択できます。(デフォルトの設定です。)

手順1
チェックボックス「Caption」を変更

右クリックメニューで「プロパティ」を選択します。

VBACheckBox021a
矢印下001

「Caption」の項目で「野球」と変更します。

同様にほか7つのオプションボタンのプロパティのCaptionの値も変更していきます

VBACheckBox022a
矢印下001

8つのチェックボックスのCaptionをこのようにセットしました。

VBACheckBox023a
手順2
イベントのVBAコード記述

「野球」のチェックボックスを

「デザインモードON」の状態の時にダブルクリックをします。

VBEが起動しシートモジュールに(今回の場合はSheet2)空のプロシージャーが記述されます。

POINT

  • ActiveXのチェックボックスの場合は、基本、シートモジュールにイベントコードが記述されます。
  • シートモジュールのイベントコードは、イベントが発生したときに実行されます。ですので、オプションボタンはクリックされないとイベントコードは実行されません。
VBACheckBox024a
矢印下001

同様に8つのチェックボックスに行っていきます。

VBACheckBox025a
手順3
プロシージャーに実行させる内容を記述します。

セルG3にオプションボタンで選択したCaptionを表示させます。

VBA
Private Sub CheckBox1_Click()
'クリックした時と外した時の条件分岐
    If CheckBox1.Value = True Then
        Range("G3").Value = CheckBox1.Caption
    Else
        Range("G3").Value = ""
    End If
End Sub

同様に残り7つのチェックボックスのVBAコードも記述します。

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
手順4
チェックボックスの選択結果

チェックボックスをクリックすると、指定のセルに選択名が表示されます。

チェックボックスのプロパティの「Caption」を表示しますので、

この「Caption」を変更すれば、それに対応して自動的に表示も変更されます。

VBACheckBox026a
手順5
チェックボックスのグループ分け

チェックボックスをグループ分けすることが出来ます。

「この場面では、このチェックボックスの選択を不可にしておきたい!」

というようなことが出来るようになります。

プロパティから設定できるのはActiveXのチェックボックスのみの機能です。

グループ分けで「すき」と「ちょっとすき」を作ります。

チェックボックス「野球」は「すき」とします。

VBACheckBox027a

チェックボックス「バスケットボール」は「ちょっとすき」とします。

VBACheckBox028a

ほか、

  • 「サッカー」→「すき」
  • 「バレーボール」→「ちょっとすき」
  • 「ゴルフ」→「すき」
  • 「卓球」→「ちょっとすき」
  • 「ラグビー」→「すき」
  • 「ソフトボール」→「ちょっとすき」

という設定をしました。

チェックボックスを使用可にするグループ名を指定する入力セルB13(グループ選択セル)を設置します。

「野球」のVBAコード

最初にグループ名があっているかどうかを判断します。

合っていなければ、Caption表示を空白にして、チェックボックスをOFFにしてプロシージャーを終了します。

VBA
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
「バスケットボール」のVBAコード
VBA
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

全体のコードはこのようになります。

VBA
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

ここまで、チェックボックスの設置方法と使い方を説明してきました。

このようにチェックボックスには2つの種類があり、設置方法もいくつかの点で違ったものになっています。

また使い方の点で異なる部分もありますので、用途を理解して使うことが必要な場合もあるかもしれません。

特に、グループ別にチェックボックスを使いたい場合は、ActiveXのチェックボックスを利用する方が良いと思います。

エクセルVBAのコントロールについて知識を増やす

VBACheckBoxp033

概してですが、

「フォームコントロール」タイプのものはそれほど多種類の機能があるわけではありません。

逆にその分、簡単に設置でき、より使いやすくはあると思います。

「ActiveX」タイプのものはプロパティがあるため、いろいろな設定が可能で、その分より知識が必要になります。

このプロパティの設定方法については、多くのことをを解説している参考資料は多くないです。

ですので、自分で一度設置して、操作のトライアンドエラーを行ってみることが一番かもしれません。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min