我正在构建一个表单,该表单在三个访问分开的表上对数据进行查询。
我的问题是for的先前版本包含太多字段,因此最终用户感到困惑。我有一个带有四个不同选项的下拉菜单。那是唯一可以选择的四个(以防止随机数据输入),并且根据选择的内容,我想显示一些字段,而其他则不显示,因为它们与之无关。我还希望当用户浏览表单的记录时该方法起作用(即:根据下拉菜单中的值显示/隐藏字段)。
我尝试使用以下代码(我是VBA中的完整初学者):
Private Sub Status_Change()
If Status.Value = "Blue" Then
Me.Field_1.Visible = False
Me.Field_2.Visible = False
Me.Field_3.Visible = False
Me.Field_4.Visible = False
Me.Field_5.Visible = False
Me.Field_6.Visible = False
Me.Field_7.Visible = False
Else
If Status.Value = "Green" Then
Me.Field_1.Visible = True
Me.Field_2.Visible = False
Me.Field_3.Visible = False
Me.Field_4.Visible = False
Me.Field_5.Visible = False
Me.Field_6.Visible = True
Me.Field_7.Visible = True
Else
If Status.Value = "Red" Then
Me.Field_1.Visible = True
Me.Field_2.Visible = False
Me.Field_3.Visible = False
Me.Field_4.Visible = False
Me.Field_5.Visible = False
Me.Field_6.Visible = True
Me.Field_7.Visible = True
Else
If Status.Value = "Yellow" Then
Me.Field_1.Visible = True
Me.Field_2.Visible = True
Me.Field_3.Visible = True
Me.Field_4.Visible = True
Me.Field_5.Visible = True
Me.Field_6.Visible = False
Me.Field_7.Visible = True
Else
If Status.Value = "Orange" Then
Me.Field_1.Visible = True
Me.Field_2.Visible = False
Me.Field_3.Visible = False
Me.Field_4.Visible = False
Me.Field_5.Visible = False
Me.Field_6.Visible = False
Me.Field_7.Visible = True
End If
End Sub
到目前为止,它没有用,我不确定自己在做什么错。有人可以帮助我吗?
提前感谢。
我建议使用AfterUpdate
事件而不是OnChange
事件。
假设Status
是一个组合框,您可能要检查组合框的绑定列是否包含要测试的值。
请注意,您的代码可以简化为以下内容:
Private Sub Status_AfterUpdate()
Me.Field_1.Visible = Status <> "Blue"
Me.Field_2.Visible = Status = "Yellow"
Me.Field_3.Visible = Status = "Yellow"
Me.Field_4.Visible = Status = "Yellow"
Me.Field_5.Visible = Status = "Yellow"
Me.Field_6.Visible = Status = "Green" or Status = "Red"
Me.Field_7.Visible = Status <> "Blue"
End Sub