2015-12-02 33 views
1

我認爲這很簡單,但無論出於何種原因,我的組合框總是空的,我不知道爲什麼!在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 

我單被稱爲數據庫,該ActiveX組合框是在同一張紙上,這就是所謂ComboBox1。我在哪裏錯了?

UPDATE

,使其運行每當我更新細胞,使

Private Sub Worksheet_Change(ByVal Target As Range) 

但是,現在當我更新細胞時,它會增加整個B柱的我已經改變了代碼再次到組合框。它不會添加空白單元格,而是從空白單元格的下面添加好值的值,但每當我進行更改時,它都會添加兩次。

雖然考慮它,我不知道爲什麼我認爲不然。但是,如果我更改列表中的公司名稱,我仍然需要組合框在實時更新。

+0

你將斷點與'If'網上看到,如果你進入它? – R3uK

+1

如果我在If行上設置了一個斷點,然後遍歷代碼,它將繼續添加值直到一個空單元格,然後重複添加這些值...所以我得到值1,值2,值3,值1,值2,值3等,而不是值1,值2,值3,值4等。 – Chris

回答

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 
+0

感謝您的迴應,但它仍然沒有填充列表。我沒有得到任何錯誤或任何東西,它只是不填充組合框。 – Chris

+0

運行代碼時,它現在將組合框填充到空單元格,但是,我仍然需要填充該空格的空單元格下的值。它並不是現場更新。 – Chris

+0

奇怪的是,它在一個空單元格後停下來......當你使用AddItem方法時,它不應該有任何問題......我會環顧一下,看看是否有解釋! – R3uK