我正在尝试为用户表单中的一系列3个组合框控件创建一个VBA更新行源例程。 这三个组合框都位于一个名为" frm1" 组合框的行源是工作表中的三个单独的列。 工作表名为" options"并且持有行源的三个列中的每个列中的顶部单元格与引用它的组合框具有相同的名称。 我的想法是,我可以在rowsource中为任何组合框写入额外的行(只需将其键入工作表的右列),然后运行例程,从而自动扩展有问题的组合框的行源选择。 / p>
然而,运行脚本(通过从UserForm_Activate()例程调用它)给了我"运行时错误' 13':类型不匹配"
你们有人可以帮助我吗?
Private Sub UpdateCB()
Dim j As Control
Dim i As Integer
For Each j In frm1.Controls
i = 1
Do Until ThisWorkbook.Sheets("options").Range(j.Name).Offset(i, 0).Value = ""
i = i + 1
Loop
j.RowSource = ThisWorkbook.Sheets("options").Range(j.Name).Resize(i)
Next j
End Sub
答案 0 :(得分:1)
ComboBox.rowsource
期待range.address
不是range.value
或您现在拥有的范围参考。因此,以这种方式在问题行的末尾添加.address property
:
j.RowSource = ThisWorkbook.Sheets("options").Range(j.Name).Resize(i).address
答案 1 :(得分:0)
如果使用.tag属性存储列号:
Private Sub Userform_initialize()
with thisworkbook.sheets("options")
combobox1.list=.columns(val(combobox1.tag)).specialcells(2).value
combobox2.list=.columns(val(combobox2.tag)).specialcells(2).value
combobox3.list=.columns(val(combobox3.tag)).specialcells(2).value
end with
end sub