我认为这很简单,但无论出于何种原因,我的组合框总是空的,我不知道为什么!在B列中,我有来自单元格B3的文本向下,并希望此列表填充我的组合框(称为ComboBox1)。 B列中的某些单元格是空的,我不想在组合框中使用这些,所以这就是我的代码:
Private Sub CompanyList()
Dim c As Range
With Worksheets("Database")
For Each c In Worksheets("Database").Range("B3", .Range("B" & Rows.Count).End(xlUp))
If c.Value <> "" Then ComboBox1.AddItem c.Value
Next c
End With
End Sub
我的工作表名为Database,ActiveX组合框位于同一张工作表上,它被称为ComboBox1。我在哪里错了?
更新
我已经更改了代码,以便在我更新单元格时运行
Private Sub Worksheet_Change(ByVal Target As Range)
然而,现在当我更新一个单元格时,它会将整个列B添加到组合框中。它没有添加空白单元格,并且它从空白单元格下面添加值很好,但是只要我做出更改,它就会将所有内容添加两次。
虽然想到了,但我不确定为什么我会这么想。但是,如果我在列表中更改公司名称,我仍然需要组合框在实时更新。
答案 0 :(得分:0)
对With
语句进行少量更正,以正确定义范围:
Private Sub CompanyList()
Dim c As Range
ComboBox1.Clear
With Worksheets("Database")
For Each c In .Range(.Range("B3"), .Range("B" & .Rows.Count).End(xlUp))
If c.Value <> vbNullString Then ComboBox1.AddItem c.Value
Next c
End With
End Sub