想要一个列表框显示1-10,但是下拉中显示的内容依赖于另一个列表项

Posted

技术标签:

【中文标题】想要一个列表框显示1-10,但是下拉中显示的内容依赖于另一个列表项【英文标题】:Want a list box to show 1-10, but what is shown in the drop-down is dependent on another list item 【发布时间】:2019-07-02 17:53:25 【问题描述】:

我想在包含数字 1-10 的 Access 表单上创建一个组合框(组合框 B)。换句话说,下拉菜单按顺序显示数字 1-10。

但是,下拉菜单中显示的内容取决于组合框 A。

如果 x 显示在组合框 A 中,则项目 1-10 应显示在组合框 B 中。 如果 y 显示在组合框 A 中,则数字 1-5 应仅显示在组合框 B 中,或至少阻止某人选择 6 或更大。 如果z 显示在组合框 A 中,则在组合框 B 中不应选择任何内容。

我的编码技能已经生疏了,因为我已经 10 多年没有做过太多事情了。这在 Access 中很容易实现吗,还是我需要一些 VBA 来帮助?​​

【问题讨论】:

【参考方案1】:

假设您的问题不仅仅是一个人为的示例,并且您确实想在组合框中显示整数 1-101-5,然后以最简单的形式,您可以使用以下函数评估组合框“A”的After Update 事件和表单的On Load 事件:

Function UpdateComboRowSource(cmbCom As ComboBox, ByVal strVal As String)
    cmbCom.RowSourceType = "Value List"
    Select Case LCase(strVal)
        Case "x":  cmbCom.RowSource = "1;2;3;4;5;6;7;8;9;10"
        Case "y":  cmbCom.RowSource = "1;2;3;4;5"
        Case Else: cmbCom.RowSource = ""
    End Select
End Function
Private Sub Form_Load()
    UpdateComboRowSource ComboB, ComboA.Value
End Sub
Private Sub ComboA_AfterUpdate()
    UpdateComboRowSource ComboB, ComboA.Value
End Sub

【讨论】:

以上是关于想要一个列表框显示1-10,但是下拉中显示的内容依赖于另一个列表项的主要内容,如果未能解决你的问题,请参考以下文章

当我们使用 JavaScript 隐藏/显示时清除下拉列表和/或文本框内容当它们被交替选择时

如果实现在combobox控件输入框中输入值而下拉列表弹开并显示根据输入值模糊查询查询数据库中的内容呢?

VB combobox怎么实现可多选下拉列表中的内容?

WPF中combobox显示多列的下拉框

表格中的组合框下拉列表

MFC组合框控件下拉列表式如何读取所选值和设置默认选项