内部和内部列表框循环错误

时间:2017-06-29 05:21:43

标签: excel-vba loops listbox runtime-error vba

Dim InputCol, InputIndex, i As Long
Dim lb As ListBox
InputCol = 1

For i = 1 To 7
    Set lb = Me.Controls("ListBox" & i)
        For InputIndex = 0 To lb.ListCount - 1
            If lb.Selected(InputIndex) Then
                Sheets("Sheets2").Cells(1, InputCol) = Sheets("Sheet1").Range("Input" & i).Cells(InputIndex)
                InputCol = InputCol + 1
            End If
        Next
Next i

我尝试使用上面的代码遍历用户表单中的多个列表框。列表框从Sheet1上的命名范围派生数据,然后将标题传递给Sheet2。 Sheet1范围按编号与列表框对齐。不幸的是,我收到了运行时错误' 13':类型不匹配引用该行:

Set lb = Me.Controls("ListBox" & i)

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

使用以下代码循环浏览Control中的所有UserForm,并检查当前控件是否为ListBox

注意Dim InputCol, InputIndex, i As Long,表示只有i被定义为Long,而InputColInputIndex被定义为{{} 1}}。

<强>代码

As Variant

答案 1 :(得分:0)

非常感谢Shai Rado向我展示了正确的方向。以下代码用于遍历userform上的所有列表框,并将每个选定项目传递给Sheet2上的标题行:

//...
ga('create', 'UA-xxxxxxxxxx-7', 'auto');
if (navigator.userAgent == "UserAgentXUI765DQZ"){
    ga('set', 'dimension1', 'Internal User'); //Make sure "dimension1" matches what Google generated. You can change "Internal User" to anything you'd like.
}
ga('send', 'pageview');
//...