チェックボックス

チェックボックスは、チェック用のボックスとキャプション名が対になったコントロールです。
アンケートなどでいくつでも選択できるような項目のような役目を果たします。
一つだけしか選択できないような用途の場合は、オプションボタンというコントロールがありますので、こちらを使った方が便利でしょう。
チェックボックスの使い方
チェックボックスは、個々の値が、True・Falseであるか、またユーザーフォーム上のチェックボックスを巡る方法を押さえておけば良いでしょう。
チェックされているかを得る
チェックボックスは、ON・OFFを表すValueプロパティのTrue・Falseを得る事になります。
また、その結果を受けてキャプション名を取得する事があります。
あるチェックボックスがTrueならば、キャプション名を得るというプログラムコードは以下のようになります。
If Me.CheckBox1.Value = True Then
MsgBox Me.CheckBox1.Caption
End If
複数のチェックボックスを扱う場合
チェックボックスは複数扱う場合が多いと思います。
チェックボックスの数が少ない場合は、If文を重ねて書く方法もあります。
しかし効率が悪いので、以下のようにループさせて書く方法が一般的です。
Private Sub CommandButton1_Click()
Dim str As String
str = "選択したもの" & vbCrLf
Dim i As Long
For i = 1 To 4 'CheckBoxナンバー
If Me.Controls("CheckBox" & i).Value = True Then
str = str & Me.Controls("CheckBox" & i).Caption & vbCrLf
End If
Next i
MsgBox str
End Sub
このコードでは、Me.Controlsでコントロール名を指定して値がTrueであるか見分けます。
Trueの場合は、文字列変数 str にそのコントロールのキャプションを追加しています。
この方法では、コントロールのオブジェクト名を”CheckBox + 数” という名称にしておかなければいけません。
複数のチェックボックスを巡る方法は、他にもあります。
ユーザーフォーム上のコントロールを全て巡り、TypeName関数でコントロールの種類を得ながら巡るという方法もよく使われます。
やり方については、チェックボックスのページで解説しています。
グループ分けしたい時
チェックボックスには、GroupNameというプロパティが用意されていて、好きな文字列を設定できます。
各チェックボックスをグループ分けしたい場合は、同じグループに同じグループ名を設定しておけば、グループ毎に値を取得する事ができます。
上記のプログラムをグループ分けした項目のみで結果を表示したい場合は以下のようにします。
チェックボックスの GroupNameプロパティ値に”Group1″を設定した例です。
Private Sub CommandButton1_Click()
Dim str As String
str = "Group1で選択したもの" & vbCrLf
Dim i As Long
For i = 1 To 4 'CheckBoxナンバー
If Me.Controls("CheckBox" & i).GroupName = "Group1" Then
If Me.Controls("CheckBox" & i).Value = True Then
str = str & Me.Controls("CheckBox" & i).Caption & vbCrLf
End If
End If
Debug.Print Me.Controls("CheckBox" & i).GroupName
Next i
MsgBox str
End Sub
この例では、リンゴとバナナのGroupName を “Group1″に設定しているため、リンゴのみがヒットしています。

チェックボックスのまとめ
チェックボックスは、結果である Value と、キャプション名 Caption の使い方を覚えましょう。
複数使う場合の例として、Me.Controls(コントロール名) として各コントロールの中からチェックボックスのオブジェクト名を指定して必要な値を得るようにしてみました。
更にチェックボックスのグループ分けをしたい場合は、GroupNameプロパティを活用できます。
今回のチェックボックスの他に、オプションボタンの使い方も見ておくと、より理解が深まると思います。
チェックボックスとオプションボタンはとてもよく似ていますが、オプションボタンは「どれか1つ」という排他処理で使うコントロールです。
オプションボタンのページを参考にしてみてください。
ユーザーフォームの使い方
・ユーザーフォームのプログラミング(準備編)
・ユーザーフォーム 第1回(起動と終了)
・ユーザーフォーム 第2回(ボタン)
・ユーザーフォーム 第3回(ラベル)
・ユーザーフォーム 第4回(テキストボックス)
・ユーザーフォーム 第5回(モーダル・モードレス)
・ユーザーフォーム 第6回(チェックボックス)
・ユーザーフォーム 第7回(オプションボタン)
・ユーザーフォーム 第8回(コンボボックス)
・ユーザーフォーム 第9回(リストボックス)
・ユーザーフォーム 第10回(リストボックス複数選択)
・ユーザーフォーム 第11回(タブストップ)
・ユーザーフォーム 第12回(スピンボタン)