教えて!ExcelVBA!

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

【ExcelVBA フォーム&コントロール】チェックボックスの状態に応じてコントロールの表示/非表示を切り替える方法を教えて!

構文

構文は以下の通りです。

Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
        ' チェックボックスがチェックされた場合の処理
    Else
        ' チェックボックスがチェック解除された場合の処理
    End If
End Sub

解説

この構文では、CheckBox1がクリックされたときに、その状態を確認し、特定のコントロール(YourControlNameに対応)の表示/非表示を切り替えています。コントロールを制御するには、基本的には「If...Then...Else」文を利用します。

使い方

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

Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
        ' 本日の授業が完了した場合の処理
        ActiveSheet.Shapes("LessonPlan").Visible = False
    Else
        ' 本日の授業が未完了の場合の処理
        ActiveSheet.Shapes("LessonPlan").Visible = True
    End If
End Sub

上記は、授業の進捗を管理するフォームがあり、チェックボックスが「本日の授業完了」を表すとします。それに応じて、次の授業の計画を表示/非表示にするプログラムを内容となります。

プログラミング例

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

(例1)セルの内容を変更する

Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
        ' チェックボックスがチェックされた場合の処理
        Range("A1").Value = "完了"
    Else
        ' チェックボックスがチェック解除された場合の処理
        Range("A1").Value = "未完了"
    End If
End Sub

この例では、チェックボックスがクリックされると、A1セルの内容が「完了」または「未完了」に切り替わります。

(例2)シートの非表示/表示を切り替える

Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
        ' チェックボックスがチェックされた場合の処理
        Sheets("Sheet2").Visible = xlSheetVisible
    Else
        ' チェックボックスがチェック解除された場合の処理
        Sheets("Sheet2").Visible = xlSheetHidden
    End If
End Sub

この例では、チェックボックスがクリックされたときに、別のシート(ここではSheet2)の表示/非表示を切り替えます。

(例3)ユーザーフォームを表示する

Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
        ' チェックボックスがチェックされた場合の処理
        UserForm1.Show
    Else
        ' チェックボックスがチェック解除された場合の処理
        Unload UserForm1
    End If
End Sub

この例では、チェックボックスがクリックされたときに、ユーザーフォームを表示または非表示にします。ユーザーフォームの名前はプロジェクトに合わせて変更してください。

まとめ

チェックボックスの状態に応じてコントロールを表示/非表示に切り替える方法を解説しました。If文を利用することで、簡潔かつ効果的にコントロールを制御できます。是非活用してください。