首页 > 解决方案 > 访问:禁用组合框

问题描述

我的表单中有 5 个组合框,我希望用户只能选择 2 个。一旦选择了 2 个,其他 3 个将被禁用?我是怎么做的?我知道你可以做一个组合框并通过 afterupdate 禁用其余的组合框,如下所示。感谢你的帮助!:)

Private Sub cboOR_AfterUpdate()
Me.cboA.Enabled = False
End Sub

标签: ms-accesscombobox

解决方案


将此 Sub 放入表单的模块中

Private Sub changeStateOfCB()

    Dim nameChB() As String
    Dim cMax As Long
    Dim ctrl As Control
    Dim cValued As Long
    Dim nameCurr As Variant

    ' names of CB
    nameChB = Split("ComboName1#ComboName2#ComboName3#ComboName4#ComboName5", "#")
    ' max allowed values
    cMax = 2

    ' counting with values
    For Each nameCurr In nameChB
        If Not Me.Controls(nameCurr).Value Is Null Then
            cValued = cValued + 1
        End If
    Next
    ' disabling if needed
    For Each nameCurr In nameChB
        If Not Me.Controls(nameCurr).Value Is Null Then
            Me.Controls(nameCurr).Enabled = (cValued < cMax)
        End If
    Next

End Sub

根据您nameChB在行中的名称更改字符串中的名称。并为每个组合框创建AfterUpdate带有调用的事件过程

changeStateOfCB

推荐阅读