将ComboBox的rowsource定义为从A开始的A列中的值

时间:2015-11-29 21:14:20

标签: excel vba

这是我到目前为止所尝试的,

Private Sub UserForm_Initialize()
Dim WBK As Workbook

Set WBK = ActiveWorkbook
    WBK.Sheets("MFG_DATA").Range("A2", Range("A" & Rows.Count).End(xlUp)).Name = "Manufacturer"
Me.MFGBOX.RowSource = "Manufacturer"
End Sub

我收到错误1004,所以我没有正确定义我的对象?

3 个答案:

答案 0 :(得分:1)

WBK.Sheets("MFG_DATA").Range("A2", Range("A" & Rows.Count).End(xlUp)).Name = "Manufacturer"

此处Range("A" & Rows.Count).End(xlUp)未使用工作表对象限定,因此将引用活动工作表。如果那不是“MFG_DATA”那么你会收到错误。

最好使用:

With WBK.Sheets("MFG_DATA")
    .Range("A2", .Range("A" & Rows.Count).End(xlUp)).Name = "Manufacturer"
End with

答案 1 :(得分:0)

我通常使用.AddItem方法填充组合框。

Test OK: void de.scrum_master.app.CalculatorTest.testAdd()
Test OK: void de.scrum_master.app.CalculatorTest.testSubtract()
Error during test: void de.scrum_master.app.CalculatorTest.testDivide()
  java.lang.ArithmeticException: / by zero
Test failed: void de.scrum_master.app.CalculatorTest.testMultiply()
  java.lang.AssertionError: expected:<11> but was:<5>

或者如果您想使用命名范围

Private Sub UserForm_Initialize()

Dim WBK As Workbook
Dim n as Integer
Dim item() as String

Set WBK = ActiveWorkbook
n = WBK.Sheets("MFG_DATA").Range("A" & WBK.Sheets("MFG_DATA").Range("A" & Rows.Count).End(xlUp)).Row

For i = 1 To n
  With Me.MFGBOX
    .AddItem item(i)
  End With
Next i

End Sub

答案 2 :(得分:0)

您可以使用命名范围代替宏,只需创建一个表格&#34; Table1&#34;在A列中添加来自A2的组合框值。然后它将进入表格范围。

然后将命名范围定义为 Combovalue 并将范围指定为 = Table1 [Headername] ,即使您在表格中添加新的组合框值,它也会自动更新

现在在combobox属性中,在 RowSource proerty Combovalue 中给出命名范围名称,现在运行表格,命名范围值将显示在组合框中:)