我有一个在组合框中有查询的子表单,我想浏览与查询结果匹配的不同记录。
在线,我找到了一个组合框的“ListIndex”函数,我的代码如下所示:“下一条记录”场景:
Private Sub Button_Click()
comboCountry.SetFocus
If comboCountry.ListIndex <> comboCountry.ListCount - 1 Then
comboCountry.ListIndex = comboCountry.ListIndex + 1
Else
comboCountry.ListIndex = 0
End If
End Sub
即使我的初始查询在组合框中输入有限数量的值,但当我按下按钮时,我会收到错误:Run-time error 7777; You've used the ListIndex property incorrectly
。
VBA调试器说错误的代码行是第4行,
comboCountry.ListIndex = comboCountry.ListIndex + 1
我的宏出了什么问题?
由于
答案 0 :(得分:1)
嗯,在线帮助 - 您可以通过一键按下来访问 - 非常清楚:此属性是只读的。
您可以这样做:
If comboCountry.ListIndex < comboCountry.ListCount - 1 Then
comboCountry.Value = comboCountry.ItemData(comboCountry.ListIndex + 1)
End If
答案 1 :(得分:0)
我相信您错误代码的来源来自另一个网站(也许是字节?)。我不确定,但是我猜它在excel vba中与在access vba中有所不同。至少在ms Access vba中,listindex是只读的,并且combo.value = combo.itemdata(i)是用于设置选择的内容。
以下是用于使用箭头键在组合框列表项之间循环的代码。
Public Sub ArrowKeys(ByRef KeyCode As Integer, combo As ComboBox, ByRef Flag As Boolean)
' flag is used to be able to toggle normal action in combo_change()
Select Case KeyCode
Case vbKeyDown
KeyCode = 0 ' make sure the action wont be duplicated
If combo.ListIndex <> combo.ListCount - 1 Then
combo.Value = combo.ItemData(combo.ListIndex + 1)
Flag = True
combo.Dropdown
Else
combo.Value = combo.ItemData(0)
Flag = True
combo.Dropdown
End If
Case vbKeyUp
KeyCode = 0 ' make sure the action wont be duplicated
If combo.ListIndex = -1 Then ' In case nothingg is selected yet (-1 index)
combo.Value = combo.ItemData(combo.ListCount - 1)
combo.Dropdown
ElseIf combo.ListIndex <> 0 Then
combo.Value = combo.ItemData(combo.ListIndex - 1)
Flag = True
combo.Dropdown
Else
combo.Value = combo.ItemData(combo.ListCount - 1)
Flag = True
combo.Dropdown
End If
End Select
End Sub