首页 > 解决方案 > 使用少量元素副本获取 ComboBox.ListIndex

问题描述

我有一个组合框列表,其中包含两个相同的值,其ListFillRange值为Sheet2!A2:A4::

在此处输入图像描述

Sheet2中的列表:

在此处输入图像描述

Private Sub ComboBox1_DropButtonClick()

Dim ComboBoxList As String

'Counts how many values in column A, which is '4'
ComboBoxList = Application.Evaluate("COUNTA(Sheet2!A:A)")

'Changes ListFillRange Value into 'Sheet2!A2:A4'
ComboBox1.ListFillRange = "Sheet2!A2:A" + ComboBoxList

Debug.Print ComboBox1.ListIndex

并想打印出第三个索引,它的值应该是'2':

Debug.Print ComboBox.ListIndex

但返回 '1' 而不是 '2'

编辑:列表由 listfillrange 组成。不是通过 AddItem

标签: excelvba

解决方案


问题是你Debug.Print ComboBox1.ListIndexComboBox1_DropButtonClick. 将其删除并将其放入ComboBox1_Change事件中并正常工作。

Option Explicit

Private Sub ComboBox1_DropButtonClick()
    Dim ComboBoxList As String
    
    'Counts how many values in column A
    ComboBoxList = Application.Evaluate("COUNTA(Sheet2!A:A)")
    
    'Changes ListFillRange Value into 'Sheet2!A2:A4'
    ComboBox1.ListFillRange = "Sheet2!A2:A" + ComboBoxList
End Sub

Private Sub ComboBox1_Change()
    Debug.Print Me.ComboBox1.ListIndex
End Sub

推荐阅读