Excel 为什么我的组合框没有任何值?
我在ui中创建了一个组合框,然后双击它转到它的VBA代码。 然后我插入了这个代码。 我想从工作表5中名为“products”的D列中提取单词,并将其插入组合框中Excel 为什么我的组合框没有任何值?,excel,vba,combobox,Excel,Vba,Combobox,我在ui中创建了一个组合框,然后双击它转到它的VBA代码。 然后我插入了这个代码。 我想从工作表5中名为“products”的D列中提取单词,并将其插入组合框中 Private Sub ComboBox1_Change() Dim c As Range ComboBox1.Clear With Worksheets(5) For Each c In .Range(.Range("D5"), .Range("D" & .Rows.Count)
Private Sub ComboBox1_Change()
Dim c As Range
ComboBox1.Clear
With Worksheets(5)
For Each c In .Range(.Range("D5"), .Range("D" & .Rows.Count).End(xlUp))
If c.Value <> vbNullString Then ComboBox1.AddItem c.Value
Next c
End With
End Sub
Private子组合框1_Change()
调光范围
组合框1.清除
附工作表(5)
对于.Range(.Range(“D5”)、.Range(“D”和.Rows.Count).End(xlUp))中的每个c
如果c.值为vbNullString,则ComboBox1.AddItem c.值
下一个c
以
端接头
当我这样做的时候,什么都不会发生。组合框只是空的
更新:
Trid这个,它不起作用
Private Sub ComboBox1_Change()
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
With Worksheets(5)
For Each c In .Range(.Range("D5"), .Range("D" & .Rows.Count).End(xlUp))
If c.Value <> vbNullString Then ComboBox1.AddItem c.Value
Next c
End With
End Sub
Private子组合框1_Change()
端接头
专用子工作表\u选择更改(ByVal目标作为范围)
调光范围
附工作表(5)
对于.Range(.Range(“D5”)、.Range(“D”和.Rows.Count).End(xlUp))中的每个c
如果c.值为vbNullString,则ComboBox1.AddItem c.值
下一个c
以
端接头
在表单的空白处双击并将代码放在那里。
它不起作用的原因是在访问列表时正在填充列表。您应该在显示列表之前填充它。为什么要在组合框更改事件中这样做?它将不断触发自身并清除所有条目。您确定是指
vbscript
而不是VBA
?我更新了代码您的第二段代码对我有效(尽管您可能希望在Dim c As Range
之后添加ComboBox1.Clear
)。工作表(5)
是否存在?在更新的代码中,您忘记复制行组合框1。清除,如@CMArg所述。此外,我不会使用工作表选择更改,而是使用“工作表更改”。这样,您就不会每次在工作表中移动时都刷新列表。还有一件事。在我的回答中,我假设您正在使用UserForms。或者你要把它插入到工作表中?如果要将其插入工作表,请确保使用ActiveX控件。