未选择的组合框当前值的 ListIndex
Posted
技术标签:
【中文标题】未选择的组合框当前值的 ListIndex【英文标题】:ListIndex of current value of combobox without selection 【发布时间】:2010-07-22 18:35:54 【问题描述】:在 VBA 中,组合框的 ListIndex 属性显示在组合框中的值的整个列表(数组)中选择的项目的索引(从 0 开始)。如果没有进行选择,则显示 -1。
当我在 Excel 中调出一个带有 Combobox 和其中最后一个值的工作表时,它的 ListIndex 为 -1,而不是项目的实际 ListIndex。
VBA中快速获取当前未选中值的ListIndex有什么技巧?
我知道我可以自己手动检查数组(.List 属性),但我希望 VBA 有更快的方法来做到这一点。
【问题讨论】:
你是通过Add
方法在Workbook_Open
上填写ComboBox
,设置ListFillRange
还是其他方法?
【参考方案1】:
来自 ListIndex 属性的 VBA 帮助:
ListIndex 属性包含所选行的索引 列表。 ListIndex 的值范围从 –1 到比总数小 1 列表中的行数(即 ListCount – 1)。当没有行时 选中时,ListIndex 返回 –1。当用户在一个 ListBox或ComboBox,系统设置ListIndex值。
所以我假设您没有选择任何内容,而是尝试读取所选值。这或许可以解释为什么 ListIndex 返回 -1。
【讨论】:
【参考方案2】:这对我来说可以检索组合中显示项目的索引。
Dim dst As Worksheet: Set dst = Worksheets("MyData")
MsgBox (dst.OLEObjects("combobox1").Object.ListIndex)
【讨论】:
以上是关于未选择的组合框当前值的 ListIndex的主要内容,如果未能解决你的问题,请参考以下文章