教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA フォーム&コントロール】チェックボックスの状態を取得する方法を教えて!

構文

構文は以下の通りです。

チェックボックス名.Value

解説

チェックボックスの状態を取得するためには、Valueプロパティを使用します。チェックボックスがチェックされていればTrue、チェックされていなければFalseが返されます。

使い方

具体的な使い方を紹介します。

Sub チェックボックスの状態を取得()
    ' チェックボックスの状態をA1セルに表示する
    Dim checkBoxValue As Boolean
    ' チェックボックスの状態を取得
    checkBoxValue = チェックボックス名.Value
    ' A1セルに状態を表示
    Range("A1").Value = checkBoxValue
End Sub

上記は、ユーザーフォーム上に配置したチェックボックスの状態をA1セルに取得し、表示する簡単な例です。この例では、チェックボックス名の部分には実際に設定したチェックボックスの名前を使用します。このコードを実行すると、チェックボックスの状態がA1セルに表示されます。

プログラミング例

以下に、プログラミング例を紹介します。

(例1)複数のチェックボックスの状態を取得し、各々の状態を別々のセルに表示

Sub 複数のチェックボックスの状態を取得()
    ' 複数のチェックボックスの状態を取得し、それぞれの状態を表示する
    Dim checkBox1Value As Boolean
    Dim checkBox2Value As Boolean
    Dim checkBox3Value As Boolean
    ' チェックボックス1の状態を取得
    checkBox1Value = チェックボックス1.Value
    ' チェックボックス2の状態を取得
    checkBox2Value = チェックボックス2.Value
    ' チェックボックス3の状態を取得
    checkBox3Value = チェックボックス3.Value
    ' 取得した状態をそれぞれのセルに表示
    Range("A1").Value = checkBox1Value
    Range("A2").Value = checkBox2Value
    Range("A3").Value = checkBox3Value
End Sub

この例では、チェックボックス1、チェックボックス2、チェックボックス3の部分にはそれぞれのチェックボックスの名前を使用します。各チェックボックスの状態を取得し、それぞれの状態をA1セル、A2セル、A3セルに表示しています。

(例2)選択されたチェックボックスを取得し、それらの状態を特定の列に表示

Sub 選択されたチェックボックスの状態を取得()
    ' ユーザーフォーム上で選択されたチェックボックスの状態を取得し、表示する
    Dim checkBox As Object
    Dim targetColumn As Integer
    Dim rowOffset As Integer
    ' チェックボックスが配置された列と行のオフセットを指定
    targetColumn = 1  ' 列A
    rowOffset = 1     ' 開始行
    ' ユーザーフォームのチェックボックスを順に取得
    For Each checkBox In UserForm1.Controls
        If TypeOf checkBox Is MSForms.CheckBox Then
            ' チェックボックスの状態を取得
            If checkBox.Value = True Then
                ' チェックされていれば、セルに表示
                Cells(rowOffset, targetColumn).Value = checkBox.Caption
                rowOffset = rowOffset + 1
            End If
        End If
    Next checkBox
End Sub

この例では、ユーザーフォーム上に配置された全てのチェックボックスを順に取得し、選択されているものだけを特定の列に表示しています。targetColumnで表示する列、rowOffsetで表示を開始する行を指定しています。

まとめ

チェックボックスの状態を取得/設定するには、Valueプロパティを使用します。取得した値がTrueの場合はチェックマークが付いている状態、Falseの場合はチェックマークが外れている状態を表しています。是非活用してください。