web-dev-qa-db-ja.com

アクセスチェックボックスがチェックされているかどうかを判断する

このような簡単な質問ですが、答えが見つかりません(Google、MSヘルプ、SO):

Accessフォームの非バインドチェックボックスがユーザーによってチェックされているかどうかをVBAで確認するにはどうすればよいですか?適切なプロパティが見つかりません。

前もって感謝します!

更新:

@HansUpと@RCの提案の後、このコードを使用しました。

Private Sub CmdTest_Click()
    MsgBox "Check1.Value = " & Me.Check1.Value
    MsgBox "Check2.Value = " & Me.Check2.Value
End Sub

Private Sub Form_Load()
    Me.Check1.Value = 25
    Me.Check2.Value = 50
End Sub

2回目の更新:

コードは次のようになります(@ David-W-Fentonに感謝):

Private Sub CmdTest_Click()
    If Me.Check1 = True Then
        MsgBox "Check1 IS CHECKED"
    Else
        MsgBox "Check1 IS NOT CHECKED"
    End If
    If Me.Check2 = True Then
        MsgBox "Check2 IS CHECKED"
    Else
        MsgBox "Check2 IS NOT CHECKED"
    End If    
End Sub

Private Sub Form_Load()
    ' set first checkbox default checked
    Me.Check1.Value = True 
    ' set second checkbox default unchecked
    Me.Check2.Value = False
End Sub
20
waanders

チェックボックスは、ブール値の有効な入力を保証するという目的のために設計されたコントロールタイプです。

Accessには、2つのタイプがあります。

  1. 2状態-チェックまたはチェック解除できますが、Nullはできません。値はTrue(チェックされている)またはFalse(チェックされていない)です。 AccessおよびVBAでは、Trueの値は-1、Falseの値は0です。Trueに1を使用する環境での移植性のために、Falseはすべての環境で値0であるため、常にFalseまたはNot Falseをテストできます。知ってる。

  2. 3-state-2-stateに似ていますが、Nullにすることができます。クリックすると、True/False/Nullが循環します。これは、NULLを許可する整数フィールドにバインドするためのものです。 Nullになることはないため、ブール型フィールドでは使用できません。

答えとマイナーなbり:

Accessコントロールの.Valueプロパティはデフォルトのプロパティなので、使用する必要はほとんどありません。これら2つは同等です。

  ?Me!MyCheckBox.Value
  ?Me!MyCheckBox

ここでの唯一の落とし穴は、チェックボックスの値をテストするときに暗黙的な参照を作成しないように注意することが重要であることです。これの代わりに:

  If Me!MyCheckBox Then

...次のオプションのいずれかを記述します。

  If (Me!MyCheckBox) Then  ' forces evaluation of the control

  If Me!MyCheckBox = True Then

  If (Me!MyCheckBox = True) Then

  If (Me!MyCheckBox = Not False) Then

同様に、ブールコントロールから値を取得するサブルーチンまたは関数を作成する場合、実際にコントロールを操作する場合を除き、常にブールパラメータをByValとして宣言します。その場合、パラメーターのデータ型はブール値ではなくアクセス制御である必要があります。それ以外のものは、暗黙的な参照のリスクを負います。

最後に、コードでチェックボックスの値を設定すると、0と-1だけでなく、実際には任意の数値に設定できますが、0以外の数値はTrueとして扱われます(Falseではないため)。 HTMLフォームでそのようなものを使用することはできますが、ユーザーがコントロールに実際に格納されている値を確認する方法がないため、Accessアプリの適切なUIデザインではありません。データの編集用に選択します。

22
David-W-Fenton

yourCheckBox.Value

4
user180100