用范围填充组合框并去除空白

时间:2015-12-02 09:15:57

标签: excel vba excel-vba combobox

我认为这很简单,但无论出于何种原因,我的组合框总是空的,我不知道为什么!在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添加到组合框中。它没有添加空白单元格,并且它从空白单元格下面添加值很好,但是只要我做出更改,它就会将所有内容添加两次。

虽然想到了,但我不确定为什么我会这么想。但是,如果我在列表中更改公司名称,我仍然需要组合框在实时更新。

1 个答案:

答案 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