在VBA中,Combobox的ListIndex属性显示在Combobox中值的整个列表(数组)中选择的项目的索引(从0开始)。如果没有选择,则显示-1。
当我在Excel中使用Combobox及其中的最后一个值调出一张工作表时,它会产生一个ListIndex为-1,而不是该项目的实际ListIndex。
VBA快速获取当前非选定值的ListIndex有什么诀窍?
我知道我可以自己手动检查数组(.List属性),但我希望VBA有更快的方法来做到这一点。
答案 0 :(得分:1)
来自 ListIndex 属性的VBA帮助:
ListIndex属性包含a中所选行的索引 名单。 ListIndex的值范围从-1到小于总数 列表中的行数(即ListCount - 1)。没有行时 选中,ListIndex返回-1。当用户选择一行中的行时 ListBox或ComboBox,系统设置ListIndex值。
所以我假设您没有选择任何内容,而是尝试读取所选值。这可能解释了为什么ListIndex返回-1。
答案 1 :(得分:0)
这对我来说可以检索组合中显示项目的索引。
Dim dst As Worksheet: Set dst = Worksheets("MyData")
MsgBox (dst.OLEObjects("combobox1").Object.ListIndex)