- VBA(Excelマクロ)でチェックボックスを作成する方法を知りたい
- ユーザーフォームでチェックボックスを使いたい
- チェックボックスをカスタマイズしたい
このようなお悩みをお持ちですか?
この記事を読むことで、下記のことがわかります。
- VBA(Excelマクロ)でチェックボックスを作成する方法がわかる
- ユーザーフォームにチェックボックスを設置する方法がわかる
- チェックボックスをカスタマイズする方法がわかる
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします
VBA(Excelマクロ)のチェックボックスとは?

チェックボックスとは、複数の選択肢から、1つまたは複数の項目を選択・非選択できるコントロールです。
Excelでは主に以下の2種類があります。
- ユーザーフォームに配置するチェックボックス
- シート上に直接配置するActiveXコントロールのチェックボックス
本記事では、ユーザーフォームのチェックボックスに焦点を当てて解説いたします。
ユーザーフォームでのチェックボックスの作り方

上図のように、
「チェックボックスのチェック数に応じて、ExcelのA1セルに結果を書き込みするマクロ」
を作ってみましょう。
今回はわかりやすくするため、最もシンプルな作り方をお見せします。
手順は以下のとおりです。
- ユーザーフォームの呼び出し
- チェックボックスの設置
- コマンドボタンの設置
- コードの追加
- テスト実行
まずはユーザーフォームを呼び出しましょう。
ユーザーフォームの呼び出し
では、ユーザーフォームの呼び出しから始めます。
VBA Project画面の上部メニューから「挿入」→「ユーザーフォーム」をクリックします。
メニューの場所などは下記記事(図解付き)で解説しております。
関連記事{ユーザーフォームの作り方・基礎}
チェックボックスの設置
次に、チェックボックスを設置します。
画面左下「ツールボックス」の「コントロール」から、「チェックボックス」を
ユーザーフォームへドラッグ&ドロップします。

チェックボックスが設置できました。

この段階で、コードを表示させておきましょう。
画面左「プロジェクト – VBA Project」下の「コードの表示」をクリックしてください。

コードが表示されました。

このコードは、チェックボックスとボタン、セルを連動させるときに編集します。
現段階では使いませんので、「×」で閉じておきましょう。
チェックボックスは1つで1項目となりますので、必要な数だけこの作業を繰り返してください。


コマンドボタンの設置
次にコマンドボタンを設置しましょう。
チェックボックスと同様に、「ツールボックス」の「コントロール」から、
「コマンドボタン」をユーザーフォームへドラッグ&ドロップします。


チェックボックスの時と同じように、コードを表示させましょう。

これでひとまずデザインは完成です。
では次に、コードを追加していきましょう。
コードを追加
初心者の方には少し難しい内容になりますので、コピペできるようにしています。
現在、下図のようにコードが表示されているかと思います。

「Private Sub CommandButton1_Click()」の中に、下記のコードを追加してください。
Private Sub CommandButton1_Click()
Dim ctrl As Control
Dim count As Integer
count = 0
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
If ctrl.Value = True Then
count = count + 1
End If
End If
Next ctrl
Range("A1").Value = count & "点です"
End Sub
これは、コマンドボタンをクリックした際の処理です。
「チェックボックスがオン(True)なら、変数「count」に1を加算する」という処理を「For Each」で繰り返しています。
関連知識{セルへの書き込み}
関連知識{変数の宣言と使い方}
関連知識{For Eachによる繰り返し文}
関連知識{条件分岐(If文)}
下図は追加した見本です。

これで、コマンドボタンがクリックされたら、チェックの数に応じてExcelのA1セルに値が書き込みされます。
以上でチェックボックスは完成です。お疲れさまでした!
テスト実行をして動きを確認しましょう。
テスト実行
上部メニューの実行ボタンをクリックしてください。

ボックスが表示されました。

2つの項目にチェックを入れ、コマンドボタン(CommandButton)を押してみます。


「2点です」という文字が、無事A1セルに書き込みされました。成功です。
しかしながら、「CheckBox1」という表示では実用できません…。
次項にて、表示を変更するなどの「チェックボックスのカスタマイズ方法」を解説いたします。
チェックボックスのカスタマイズ
パーツのデザイン変更
パーツ(チェックボックスやコマンドボタンなど)の位置や大きさ、表示内容の変更が可能です。
- 位置の変更
- 大きさの変更
- 表示内容の変更
- 文字色・背景色の変更 など
詳細は下記記事で解説しております。
関連記事{ユーザーフォームの作り方(図解)}
下記にて簡単にやり方を紹介いたします。
【表示内容の変更】
表示を変更したいパーツをクリックします。
さらにもう一度クリックすると、表示を変更できるようになります。
【位置変更】
パーツの上下左右の輪郭にマウスカーソルを重ねます。
すると四隅に矢印が付いたカーソルに変化する場合があります。
この時、ドラッグすることで、パーツを移動させることができます。
【大きさ変更】
パーツの四隅にマウスカーソルを重ねることで、左右に矢印が付いたカーソルに変化する場合があります。
この時、ドラッグすることで、パーツの大きさを変えることができます。
ユーザーフォームを自動で閉じる
前項で紹介した方法では、コマンドボタンを押してもユーザーフォームが閉じられず、出っ放しになります。
なので、コマンドボタンを押したらユーザーフォームを閉じるコードを追加しましょう。
Unload UserForm1
上記VBAコードがユーザーフォームを閉じる記述です。
「UserForm1」はユーザーフォーム名に応じて変更してください。
下記のように、コマンドボタンを押したら実行される処理の最後に記述しましょう。
Private Sub CommandButton1_Click()
Dim ctrl As Control
Dim count As Integer
count = 0
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
If ctrl.Value = True Then
count = count + 1
End If
End If
Next ctrl
Range("A1").Value = count & "点です"
Unload UserForm1
End Sub
リストボックスとの違い

よく似たコントロールに、上図のような「リストボックス」があります。
リストボックスもチェックボックスと同様に、複数の項目を選択できるという点では違いが無いように思えます。
今回は双方の主な違いをまとめてみました。

【リストボックス】
特徴:複数の選択肢を一覧表示し、選択させる部品
目的:いくつかの選択肢から選ばせる
主な用途:都道府県の選択、チャンネルの選択など
適した項目数:多数の項目(5個以上〜数十個)

【チェックボックス】
特徴:複数の選択肢を個別に独立して選択できる
目的:チェックの有無を判定する
主な用途:利用規約、オプションの選択、有効・無効の切り替えなど
適した項目数:少数の項目(3〜5個程度)
リストボックスは選ばれた項目を取得して処理する際に適しています。
チェックボックスは、どちらかというとチェックされているかされていないかを判別して次の処理につなげるといった具合です。
最後に
VBA(Excelマクロ)のチェックボックスについて解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!