用范围填充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