ユーザーフォーム 第6回 チェックボックス

ユーザーフォーム

チェックボックス

 チェックボックスは、チェック用のボックスキャプション名が対になったコントロールです。
 アンケートなどでいくつでも選択できるような項目のような役目を果たします。
 一つだけしか選択できないような用途の場合は、オプションボタンというコントロールがありますので、こちらを使った方が便利でしょう。

チェックボックスの使い方

 チェックボックスは、個々の値が、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つ」という排他処理で使うコントロールです。
 オプションボタンのページを参考にしてみてください。

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