用范围填充combobox并删除空白

我以为这会很简单,但无论什么原因,我的combobox总是空的,我不知道为什么! 在列BI有从单元格B3向下的文本,并希望此列表填充我的combobox(称为ComboBox1)。 B列中的一些单元格是空的,我不希望这些在combobox中,所以这是我有的代码:

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 

我的工作表被称为数据库,ActiveXcombobox在同一张工作表上,它被称为ComboBox1。 我在哪里错了?

UPDATE

我更改了代码,以便在更新单元格时运行

 Private Sub Worksheet_Change(ByVal Target As Range) 

但是,现在当我更新一个单元格时,它会将整个列B添加到combobox中。 它不是添加空白单元格,而是从空白单元格的下面添加值,这是很好的,但是每当我做出更改时,它只是添加所有内容。

虽然考虑这个问题,但我不确定为什么我不这么想。 但是,如果我在列表中更改公司名称,我仍然需要combobox在实时更新。

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