【図解】VBA(Excelマクロ)チェックボックスの作り方【初心者向けコードあり】

スポンサードリンク
VBA
  • VBA(Excelマクロ)でチェックボックスを作成する方法を知りたい
  • ユーザーフォームでチェックボックスを使いたい
  • チェックボックスをカスタマイズしたい

このようなお悩みをお持ちですか?
この記事を読むことで、下記のことがわかります。

  • VBA(Excelマクロ)でチェックボックスを作成する方法がわかる
  • ユーザーフォームにチェックボックスを設置する方法がわかる
  • チェックボックスをカスタマイズする方法がわかる

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします

スポンサードリンク

VBA(Excelマクロ)のチェックボックスとは?

チェックボックスの見本

チェックボックスとは、複数の選択肢から、1つまたは複数の項目を選択・非選択できるコントロールです。
Excelでは主に以下の2種類があります。

  • ユーザーフォームに配置するチェックボックス
  • シート上に直接配置するActiveXコントロールのチェックボックス

本記事では、ユーザーフォームのチェックボックスに焦点を当てて解説いたします。

スポンサードリンク

ユーザーフォームでのチェックボックスの作り方

チェックボックスから書き込みまで

上図のように、
「チェックボックスのチェック数に応じて、ExcelのA1セルに結果を書き込みするマクロ」
を作ってみましょう。

今回はわかりやすくするため、最もシンプルな作り方をお見せします。
手順は以下のとおりです。

  • ユーザーフォームの呼び出し
  • チェックボックスの設置
  • コマンドボタンの設置
  • コードの追加
  • テスト実行

まずはユーザーフォームを呼び出しましょう。

ユーザーフォームの呼び出し

では、ユーザーフォームの呼び出しから始めます。
VBA Project画面の上部メニューから「挿入」→「ユーザーフォーム」をクリックします。
メニューの場所などは下記記事(図解付き)で解説しております。

関連記事{ユーザーフォームの作り方・基礎

チェックボックスの設置

次に、チェックボックスを設置します。
画面左下「ツールボックス」の「コントロール」から、「チェックボックス」
ユーザーフォームへドラッグ&ドロップします。

チェックボックスの設置1

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

チェックボックスの設置2

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

チェックボックスの設置3

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

チェックボックスの設置4

このコードは、チェックボックスとボタン、セルを連動させるときに編集します。
現段階では使いませんので、「×」で閉じておきましょう。

チェックボックスは1つで1項目となりますので、必要な数だけこの作業を繰り返してください。

チェックボックスの設置5
チェックボックスの設置6

コマンドボタンの設置

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

コマンドボタンの設置1
コマンドボタンの設置2

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

コマンドボタンの設置3

これでひとまずデザインは完成です。
では次に、コードを追加していきましょう。

コードを追加

初心者の方には少し難しい内容になりますので、コピペできるようにしています。
現在、下図のようにコードが表示されているかと思います。

コードの追加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文)

下図は追加した見本です。

コードの追加2

これで、コマンドボタンがクリックされたら、チェックの数に応じてExcelのA1セルに値が書き込みされます。

以上でチェックボックスは完成です。お疲れさまでした!
テスト実行をして動きを確認しましょう。

テスト実行

上部メニューの実行ボタンをクリックしてください。

テスト実行1

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

テスト実行2

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

テスト実行3
テスト実行4

「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など、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました