複数あるチェックボックスをVBAで判定

ExcelのVBAで複数あるチェックボックスのチェック判定をする。
具体的なサンプルコードでご紹介します。
複数あるチェックボックスをVBAで判定

ExcelのVBAでユーザーフォームを利用し、複数配置されたチェックボックスのチェック判定をするプログラムです。 チェックされている項目をテキストボックスに表示します。

複数あるチェックボックスをVBAで判定!

①サンプルフォーム
サンプルフォーム

サンプルフォーム

手 順
  • 上図のようなフォームを作成します。
解 説
項目にチェックをし[実行]ボタンを押すとテキストボックスにチェックされた項目が表示されると言う単純なプログラムを想定しています。
②Excelを開くと自動でこのユーザーフォームが開くようにする
  1. Private Sub Workbook_Open()
  2.   UserForm1.StartUpPosition = 2  '画面中央
  3.   UserForm1.Show  'ユーザフォームを表示
  4. End Sub
手 順
  • WorkbookのOpenイベントに上記コードを記述する。
解 説
このExcelを開いた際に自動的にこのフォームが開くようにする処理です。
WorkbookのOpenイベントはこのエクセルが開いた時に実行されるイベントです。 ここに「UserForm1.Show」でフォームを表示するよう命令を記述します。

「UserForm1.StartUpPosition = 2」はフォームをPC画面の真ん中に表示する命令です。
「StartUpPosition = 3」なら画面左上
③実行が押された時の処理
  1. Private Sub CommandButton1_Click()
  2.   Dim chkBox As Control
  3.   Dim wkStr As String
  4.   wkStr = ""
  5.   For Each chkBox In Controls
  6.     '--チェックボックスの名前に「CheckBox」の文字列があるか?
  7.     If InStr(chkBox.Name, "CheckBox") <> 0 Then
  8.       '--チェックされていれば
  9.       If chkBox.Value = True Then
  10.         wkStr = wkStr & "|" & chkBox.Caption
  11.       End If
  12.     End If
  13.   Next chkBox
  14.   
  15.   '--文末に「|」を付けてテキストボックス」に書出し
  16.   If wkStr <> "" Then
  17.     wkStr = wkStr & "|"
  18.     TextBox1.Text = wkStr
  19.   Else
  20.     MsgBox "1つもチェックされていません!", vbOKOnly + vbInformation, "確認してね"
  21.   End If
  22. End Sub
手 順
  • CommandButton1のClickイベントに上記コードを記述する。
解 説
[実行]ボタン(CommandButton1)が押された時の処理です。
CommandButton1のClickイベントは[実行]がクリックされた時に実行されるイベントです。
ポイントは「chkBox」にフォーム上のすべてのコントロールを一括取得する所です。

02行:「chkBox」と言うコントロール型の変数を定義
06行:「For Each 変数 In コレクション」で1つ1つのコントロールを処理していく
08行:「chkBox.Name」でコントロールがチェックボックスかどうか調べる
10行:「chkBox.Value = True」でチェックボックスがチェックされているか調べる
11行:チェックされていれば「wkStr」変数に格納する
19行:「wkStr」が空でなければテキストボックス(TextBox1)に表示する
④実行結果
サンプルフォーム実行結果

実行結果

解 説
項目にチェックをし[実行]ボタンを押します。テキストボックスにチェックされた文字列が表示されればOKです。
<後記>
今回は「For Each 変数 In コレクション」でコントロールを処理する部分を中心にしてみました。 VBAのプログラムでいろいろと応用の効く構文になりますので、みなさんの参考になれば幸いです。

TOP