【VBA】ユーザーフォームのチェックボックスの使い方(オン/オフの判定)

目次

はじめに

VBAのユーザーフォームで、ユーザーに複数の選択肢の中から「必要なもの」を自由に選んでもらうような場面では、「チェックボックス」コントロールが最適です。アンケートの回答や、適用したいオプションの選択など、様々な用途で活用できます。

ユーザーがチェックを入れたかどうかは、チェックボックスの .Value プロパティを調べることで簡単に判定できます。

この記事では、ユーザーフォーム上に配置した複数のチェックボックスの状態(オン/オフ)を取得し、どの項目が選択されたのかをプログラムで判別する方法を解説します。


チェックボックスの状態を取得するVBAサンプルコード

このマクロは、ユーザーフォームに配置された「確認」ボタンがクリックされたときに、3つのチェックボックスの状態を調べ、選択されている項目のリストをメッセージボックスに表示します。

ユーザーフォームのコード

' 「確認」ボタン(ConfirmButton)がクリックされたときの処理
Private Sub ConfirmButton_Click()

    '== 変数を定義します ==
    Dim selectedOptions As String
    Dim i As Long
    Dim targetCheckbox As MSForms.CheckBox
    
    selectedOptions = "選択されたオプション:" & vbCrLf
    
    '== 1番から3番までのチェックボックスをループ処理 ==
    For i = 1 To 3
        ' Controlsコレクションを使って、名前でチェックボックスを指定
        Set targetCheckbox = Me.Controls("OptionCheckBox" & i)
        
        ' .Valueプロパティで、チェックがオン(True)かオフ(False)かを判定
        If targetCheckbox.Value = True Then
            ' チェックがオンなら、Caption(表示テキスト)を結果に追加
            selectedOptions = selectedOptions & "・" & targetCheckbox.Caption & vbCrLf
        End If
    Next i
    
    '== 結果をメッセージボックスに表示 ==
    MsgBox selectedOptions, vbInformation, "選択結果"

End Sub

実行前の準備

  1. ユーザーフォームを作成します。
  2. フォーム上に「チェックボックス」を3つと、「コマンドボタン」を1つ配置します。
  3. 3つのチェックボックスの (Name) プロパティを、上から順に OptionCheckBox1, OptionCheckBox2, OptionCheckBox3 に変更します。Caption はそれぞれ「Eメールで通知」「SMSで通知」「電話で通知」のように設定します。
  4. コマンドボタンの (Name)ConfirmButton に、Caption確認 に変更します。
  5. フォームのコードモジュールに上記のコードを貼り付け、フォームを表示して使用します。

コードの解説

Set targetCheckbox = Me.Controls("OptionCheckBox" & i)

For ループを使って、OptionCheckBox1, OptionCheckBox2, OptionCheckBox3 という名前のコントロールを順番に処理しています。

  • Me.Controls(...): フォーム上のコントロールを、名前(文字列)で指定してアクセスするためのコレクションです。ループカウンタ i を使って "OptionCheckBox" & i とすることで、効率的に複数のコントロールを扱うことができます。

If targetCheckbox.Value = True Then

この一行が、チェックボックスの状態を判定する核心部分です。

  • .Value: チェックボックスの Value プロパティは、チェックが入っている(オン)状態であれば True を、入っていなければ(オフ) False を返します。
  • この If 文で、ValueTrue の場合、つまり「ユーザーがその項目を選択した場合」のみ、中の処理が実行されます。

selectedOptions = selectedOptions & "・" & targetCheckbox.Caption & vbCrLf

チェックがオンだった場合に、そのチェックボックスの .Caption プロパティ(画面に表示されているテキスト、例: “Eメールで通知”)を取得し、結果を格納する文字列変数 selectedOptions に追加しています。


まとめ

今回は、ユーザーフォームのチェックボックスが選択されているかどうかをVBAで判定する方法を解説しました。

  • チェックボックスの状態は .Value プロパティで確認できる(オン = True, オフ = False)。
  • 複数のコントロールは、Controls コレクションとループを組み合わせることで効率的に処理できる。

この基本を応用すれば、ユーザーが選択したオプションに応じて、実行する処理を分岐させたり、計算結果を変えたりと、よりインタラクティブで多機能なツールを作成することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次