限制Access中MultiSelect ListBox中的选择数量?

时间:2009-09-10 18:38:32

标签: ms-access vba access-vba

有没有办法限制用户可以在Access 2003中启用MultiSelect的ListBox上选择的选项数量?现在我有一个触发On Click事件的程序,它检查所选择的选项数量,如果它超过我的阈值,它将显示一个警告标签。

4 个答案:

答案 0 :(得分:3)

您可以使用listbox BeforeUpdate事件来查看listbox.ItemsSelected.Count值。 如果超过了你的限制,那么你取消选择(使用listbox.Selectec(item)= False)当前的一个并取消该事件。

这是一个例子: Private Sub lstItems_BeforeUpdate(Cancel As Integer)

' Warn the user that only x items can be selected.
' ------------------------------------------------
If lstItems.ItemsSelected.Count > MAX_SELECTED_ITEM_PERMITTED Then
    MsgBox "You can only select " & MAX_SELECTED_ITEM_PERMITTED & " items in this list.", vbOKOnly + vbInformation, "Error"

    ' Unselect previously selected item.
    ' ----------------------------------
    lstItems.Selected(lstItems.ListIndex) = False
    Cancel = True
End If
End Sub

' Warn the user that only x items can be selected. ' ------------------------------------------------ If lstItems.ItemsSelected.Count > MAX_SELECTED_ITEM_PERMITTED Then MsgBox "You can only select " & MAX_SELECTED_ITEM_PERMITTED & " items in this list.", vbOKOnly + vbInformation, "Error" ' Unselect previously selected item. ' ---------------------------------- lstItems.Selected(lstItems.ListIndex) = False Cancel = True End If End Sub

答案 1 :(得分:3)

试一试。如果超过预定义的限制,它基本上取消选择最后选择的项目:

Private Sub ListBox1_Change()

Dim counter         As Integer
Dim selectedCount   As Integer

selectedCount = 0

For counter = 1 To ListBox1.ListCount Step 1
    If ListBox1.Selected(counter - 1) = True Then 'selected method has 0 base
        selectedCount = selectedCount + 1
    End If
Next counter

If selectedCount >= 4 Then 'modify # here
    ListBox1.Selected(ListBox1.ListIndex) = False 'listindex returns the active row you just selected
    MsgBox "Limited to 4 Choices", vbInformation + vbOKOnly, "Retry:"
End If
End Sub

答案 2 :(得分:1)

使用列表框ItemsSelected集合?这是我所知道的限制所选项目数量的唯一方法。 OTOH有一些真正扭曲的人可能已经找到了替代方案,所以我永远不会说永远不会。

这种方法有什么问题?

答案 3 :(得分:1)

我建议使用更加易于管理,用户友好且易于理解的用户界面配对列表框方法,ADD>用户达到限制后按钮。您不必做任何困难,只需检查右侧列表框的ListCount并禁用ADD>按钮达到限制时。

您可以避免许多问题,因为与在一个列表框中一次选择多个项目相比,用户可以清楚地知道他们正在做什么。你可以使左手列表框多选,只需禁用ADD>如果ItemsSelected计数超出限制,则按钮,并正确通知用户。