希望列表框显示1-10,但下拉列表中显示的内容取决于另一个列表项

时间:2019-07-02 17:53:25

标签: vba ms-access combobox access-vba ms-access-forms

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

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

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

我的编码技能令人生疏,因为我10多年没有做太多事情。是否可以在Access中轻松实现此功能,还是需要一些VBA协助?

1 个答案:

答案 0 :(得分:0)

假设您的问题不只是一个虚构的示例,并且您真的想在组合框中显示整数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