如何通过VBA代码在ListBox中导航?

时间:2018-10-10 08:26:18

标签: ms-access

我想在访问表单中插入一些导航按钮。用户应该能够使用此按钮在ListBox中向上和向下导航。列表框不是多选的。

这是我上一个按钮的代码:

Private Sub btnPrev_Click()
    myListBox.SetFocus
    myListBox.ListIndex = MyLib.max(0, myListBox.ListIndex - 1)
    btnPrev.SetFocus
End Sub

代码出现问题:

  1. 我必须将焦点设置到ListBox。如果没有,我将收到错误7777(属性ListIndex的错误使用)
  2. ListBox必须处于活动状态,因为SetFocus如果处于非活动状态,则将不起作用。
  3. 不能锁定列表框

在ListBox中使用vba导航的最佳实践是什么?

1 个答案:

答案 0 :(得分:1)

您不应使用.ListIndex属性来四处走动。

改为使用.ItemsSelected.Selected

Private Sub btnPrev_Click()
    With myListBox
        If .ItemsSelected.Count = 0 Then Exit Sub 'Can't move to previous if nothing is selected
        Dim currentPosition As Long
        currentPosition = .ItemsSelected(0) 'Current position = position of first selected item
        If currentPosition = 0 Then Exit Sub 'Can't move lower than 0
        .Selected(currentPosition) = False 'Deselect current item
        .Selected(currentPosition-1) = True 'Select previous item
    End With
End Sub

当列表框不是多选时,可以取消选择当前项目,因为在这种情况下,选择一个项目会取消选择所有其他项目。