VBA excel:通过调整范围大小来更新组合框控件的行源



我正在尝试为用户窗体中的一系列3个组合框控件制作VBA更新行源例程。三个组合框都位于一个名为"frm1"的框架中组合框的行源是工作表中三个独立的列。工作表被命名为"选项",包含行源的三列中的每一列的顶部单元格都与引用它的组合框同名。其想法是,我可以在任何组合框的行源中写入额外的行(只需将其键入工作表的右列),然后运行例程,从而自动扩展所讨论的组合框的列源选择。

然而,运行脚本(通过从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

ComboBox.rowsource需要range.address,而不是range.value或您现在拥有的范围引用。因此,以这种方式在问题行的末尾添加.address property

j.RowSource = ThisWorkbook.Sheets("options").Range(j.Name).Resize(i).address

如果您使用.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

最新更新