Access 2016-根据下拉菜单的结果显示/隐藏表单中的字段

问题描述 投票:0回答:1

我正在构建一个表单,该表单在三个访问分开的表上对数据进行查询。

我的问题是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

到目前为止,它没有用,我不确定自己在做什么错。有人可以帮助我吗?

提前感谢。

vba ms-access access-vba ms-access-2016
1个回答
0
投票

我建议使用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
© www.soinside.com 2019 - 2024. All rights reserved.