我有2个ComboBoxes,我使用RowSource
填充
Combobox2 RowSource
根据Combobox1的值而变化。
我有这段代码:
If Combobox1.Value = "Item1" Then Combobox2.RowSource = "Sheet1!Item1"
Sheet1
是工作表的名称,Item1
是命名范围。
问题:
如果打开的唯一工作簿是包含此代码的工作簿,则此工作正常
但是,如果另一个工作簿已打开,则无法正确引用RowSource
我该如何改进呢?
答案 0 :(得分:2)
您可以使用组合框的List属性,例如:
If Combobox1.Value = "Item1" Then
Me.ComboBox2.List = Application.WorksheetFunction.Transpose(Workbooks("test").Worksheets("Sheet1").Range("Item1"))
End If
Application.Transpose需要将范围转换为一维数组。
答案 1 :(得分:0)
要改进此功能,请包含包含 RowSource 的工作簿的Filename
,如下所示:
If ComboBox1.Value = "Item1" Then ComboBox2.RowSource = "'[Test.xlsm]Sheet1'!Item1"
或者更好地通过声明变量来改进它:
Dim wb As Workbook, ws As Worksheet
Set wb = Thisworkbook
Set ws = wb.Sheets("Sheet1")
If ComboBox1.Value = "Item1" Then _
ComboBox2.RowSource = "'[" & wb.Name & "]" & ws.name & "'!" & "Item1"