【2種類のチェックボックス】エクセルシートへの設置と使い方の違いを解説

VBACheckBoxeyecatch

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

 

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

 

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

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

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

 

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

 

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

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

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

 

この記事では、

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

 

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

 

オプションボタンと同様に、チェックボックスでも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を開くとオプションボタンのプロシージャーが記述されています。

MEMO

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

 

VBACheckBox011a

 

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

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

VBACheckBox012a

矢印下001

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

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

VBACheckBox013a

矢印下001

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

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

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

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

VBACheckBox014

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

VBACheckBox015

矢印下001

コード

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

 

MEMO

If条件文についてはこちらの記事も参考になります。

エクセルVBA 「If条件文」を最速に理解。条件の絞り方

 

手順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を表示させます。

 

コード

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

 

手順4
チェックボックスの選択結果

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

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

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

VBACheckBox026a

 

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

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

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

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

ActiveXのチェックボックスのみの機能です。

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

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

VBACheckBox027a

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

VBACheckBox028aほか、

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

という設定をしました。

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

 

「野球」のVBAコード

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

合っていなければ、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

 

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

 

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

全体のコード

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を独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。

けれども、

出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。

独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。

先人が行った勉強方法をあなたがそのまま利用すればよいということです。

vbastudyeyecatch002 エクセルVBAを独学で習得する!ために大切な7つのポイントを解説します

独習のための大切な7つのポイントは、上記記事にて解説しています。

重要ワード

独習によるVBA習得のキーワードは、

出来るだけ多くの実例に触れること!

です。

正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。

ハッキリ言って、

本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、

手っ取り早く短期間習得できるというのは間違いないでしょう。

 

 

「VBA最速理解」の記事一覧を開く

 

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

 

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