未选择的组合框当前值的 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的主要内容,如果未能解决你的问题,请参考以下文章

谁知道VB中列表框这几个属性的区别

基于当前字段值的MS访问表单组合框行源

excel VBA 组合框 取值

未绑定组合框:所选文本未显示

选择项目后,边框未显示在 Flex 可搜索组合框中

MS ACCESS - 如何在更改事件中获取未绑定组合框的当前列值