回答:
コントロールについて説明している動作は、セット内のすべてのチェックボックスを同時に有効または無効にするための[すべて選択]チェックボックスを伴う複数のチェックボックスを持っているのと似ています。
これを実現するにAfter Update
は、コントロールのさまざまなイベントハンドラーでVBAコードを使用する必要があると思います。
次の例でchk1
はchk2
、と呼ばれる一連のチェックボックスと、呼び出される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
関数が評価され、フォーム上のすべてのオプションチェックボックスの設定を同時に有効または無効にします。