Vba 在Access多项目表单中,一行中仅启用一个复选框

Vba 在Access多项目表单中,一行中仅启用一个复选框,vba,ms-access,Vba,Ms Access,我有一个多项目表单,其中大多数复选框都被禁用,除非用户选中它前面的复选框 目前我正在使用: If Me.Field1 Then Me.chxField2.Enabled = True Else Me.chxField2.Enabled = False End If 但如果我选中该复选框,它将为所有行启用Field2复选框,我只希望它为一个特定行启用复选框 这可能吗?如果不是,那没关系,但我不得不问 编辑:多亏了Erik,我在BeforeUpdate中做到了这一点,正如他所描

我有一个多项目表单,其中大多数复选框都被禁用,除非用户选中它前面的复选框

目前我正在使用:

If Me.Field1 Then
    Me.chxField2.Enabled = True
Else
    Me.chxField2.Enabled = False
End If
但如果我选中该复选框,它将为所有行启用Field2复选框,我只希望它为一个特定行启用复选框

这可能吗?如果不是,那没关系,但我不得不问

编辑:多亏了Erik,我在BeforeUpdate中做到了这一点,正如他所描述的那样,它提供了我想要的效果:

Private Sub chxField2_BeforeUpdate(Cancel As Integer)
    Cancel = Not Field1
    chxField2.Undo
End Sub
不幸的是,它不是(据我所知)

在连续形式上,实际上每个控件只有一个实例。这意味着您不能启用其中一个Field2复选框,而禁用另一个复选框

你可以做的事情:

使用复选框\u BeforeUpdate事件检查是否选中字段1。如果未选中,则回滚更改:

Private Sub Field2_BeforeUpdate(Cancel As Integer)
    Cancel = Not Field1
End Sub

此外,如果不使用复选框,则可以使用条件格式为控件提供“禁用的外观”。不幸的是,条件格式不适用于复选框。

对于记录(并非双关语),该条件可以简化为
Me.chxField2.Enabled=Me.Field1
@Mat'sMug-oh-nice!我以后一定会像那样使用它。谢谢,没问题!请注意,这是在我管理的OSS项目中实施的50多个代码检查中的一个。请看一下此线程中建议的方法: