アクセス時にチ​​ェックされる他のチェックボックスに基づいてチェックボックスをチェックする


0

DR Processという名前のチェックボックスフィールドを持つアクセス2010のフォームがあり、それからチェックすると、DR Processチェックボックスが自動的にチェックされるようにする25個のチェックボックスフィールドがあります。また、25のフィールドのいずれかがチェックされている場合、チェックが外されていると、DR Processチェックボックスがオフになります。これを行う方法はありますか?

ありがとうございました

回答:


0

コントロールについて説明している動作は、セット内のすべてのチェックボックスを同時に有効または無効にするための[すべて選択]チェックボックスを伴う複数のチェックボックスを持っているのと似ています。

すべて選択

これを実現するにAfter Updateは、コントロールのさまざまなイベントハンドラーでVBAコードを使用する必要があると思います。

次の例でchk1chk2、と呼ばれる一連のチェックボックスと、呼び出されるchk3単一の[すべて選択]チェックボックスがあると仮定していますchkA(ただし、これは単にForループの上限を増やすことで任意の数のチェックボックスに拡張できます)。

その後、次の2つの関数を使用して、目的の動作を実現できます。

すべてのオプションチェックボックスを特定の値に切り替える関数:

Function ToggleAll(v As Integer)
    Dim i As Integer
    For i = 1 To 3
        Controls("chk" & i).Value = v
    Next i
End Function

すべてのオプションチェックボックスが有効かどうかをテストし、それに応じて[すべて選択 ]チェックボックスを有効または無効にする関数:

Function AllEnabled()
    Dim i As Integer, v As Integer: v = -1
    For i = 1 To 3
        v = v * Abs(Controls("chk" & i).Value)
    Next i
    chkA.Value = v
End Function

次に、After Updateコントロールのイベントハンドラー内から上記の関数を評価するだけです。

Private Sub chk1_AfterUpdate()
    AllEnabled
End Sub

Private Sub chk2_AfterUpdate()
    AllEnabled
End Sub

Private Sub chk3_AfterUpdate()
    AllEnabled
End Sub

Private Sub chkA_AfterUpdate()
    ToggleAll chkA
End Sub

ここでは、個々のオプションチェックボックスの値が変更されるたびに、AllEnabled関数はすべてのオプションチェックボックスが有効かどうかを確認し、それに応じて[すべて選択 ]チェックボックスの値を設定します。

[すべて選択]チェックボックス(chkA)の値が変更されると、ToggleAll関数が評価され、フォーム上のすべてのオプションチェックボックスの設定を同時に有効または無効にします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.