我想在访问表单中插入一些导航按钮。用户应该能够使用此按钮在ListBox中向上和向下导航。列表框不是多选的。
这是我上一个按钮的代码:
Private Sub btnPrev_Click()
myListBox.SetFocus
myListBox.ListIndex = MyLib.max(0, myListBox.ListIndex - 1)
btnPrev.SetFocus
End Sub
代码出现问题:
在ListBox中使用vba导航的最佳实践是什么?
答案 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
当列表框不是多选时,可以取消选择当前项目,因为在这种情况下,选择一个项目会取消选择所有其他项目。