← コード一覧へ戻る
実務UserForm

チェックボックスで淡色表示を判定する

チェックボックスの淡色状態をNullとして判定します。未決定・有効・無効の3状態をラベルへ表示します。

実行前に確認

  • 淡色のNull状態とEnabled=Falseによる操作禁止は別です。
  • Nullは「= Null」で比較せずIsNullで調べます。Nullへの変更も拾うためClickではなくChangeを使います。
  • コードと公式仕様を照合した学習用の例です。Excel実機での実行確認は行っていません。

1サンプルコード

'【貼付先:UserForm1 のコードモジュール】
Option Explicit

Private Sub UserForm_Initialize()
    Me.Width = 360
    Me.Label1.AutoSize = True
    Me.CheckBox1.Caption = "承認状態"
    Me.CheckBox1.TripleState = True
    Me.CheckBox1.Value = Null
    UpdateState
End Sub

Private Sub CheckBox1_Change()
    UpdateState
End Sub

Private Sub UpdateState()
    If IsNull(Me.CheckBox1.Value) Then
        Me.Label1.Caption = "未決定(Null)"
    ElseIf Me.CheckBox1.Value Then
        Me.Label1.Caption = "承認(True)"
    Else
        Me.Label1.Caption = "未承認(False)"
    End If
End Sub

図で見る3状態を分ける

イメージ図

チェックボックスの淡色状態をNullとして判定します。未決定・有効・無効の3状態をラベルへ表示します。

  1. 許可

    TripleState=True

  2. 先に判定

    IsNullなら未決定

  3. 次に判定

    True/Falseを表示

各操作は、このガイドに指定されたフォームのコードで行います。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[ユーザーフォーム]で、名前がUserForm1の空のフォームを用意します。各例は別々に試します。

  2. 2

    ツールボックスからCheckBox1とLabel1を各1個を置き、各コントロールの[(Name)]が記載どおりか確認します。

  3. 3

    UserForm1を右クリック→[コードの表示]を開き、掲載コード全体をフォームのコードモジュールへ貼り付けます。標準モジュールには貼り付けません。

  4. 4

    VBEでUserForm1を選び、F5でフォームを表示します。 初期表示を確認し、CheckBox1を繰り返しクリックします。

  5. 5

    最初は淡色で「未決定(Null)」、クリックするとTrue・False・Nullの状態に応じた表示になります。

使っている機能の公式ドキュメント(Microsoft Learn)