0

我有以下代码,当然它不起作用,但我希望它表明我的意图。

Dim lItem As Long
Dim input_sh As Worksheet
Dim lb As ListBox
Set input_sh = ActiveWorkbook.Sheets("Input")
    For i = 1 To 4
        lb = "ListBox" & i
        For lItem = 0 To lb.ListCount - 1
            If lb.Selected(lItem) = True Then
                input_sh.Cells(1, 14 + i) = lb.List(lItem)
                lb.Selected(lItem) = False
            End If
        Next lItem
    Next i

基本上我在用户窗体中有 4 个列表框,并且会使用 for 循环来获取所选项目,而不是为每个列表框设置一个 for 循环。

4

1 回答 1

0

这个问题在评论中得到了回答,但只是为了使它成为堆栈中少一个未回答的问题(最终在接近投票堆栈中):

Dim input_sh As Worksheet
Dim lb As ListBox

Set input_sh = ActiveWorkbook.Sheets("Input")
For i = 1 To 4

    Set lb = Controls("ListBox" & i)

    ' object "lb" now contains a reference to the appropriate ListBox control.
    ' (do something with lb)

Next i

这是 VB6 和 VBA 之间的区别之一:在 VBA 中不能有控件数组。在 VB6 中,您可以命名所有 ListBox,例如MyListBox,并给它们一个介于 1 和 4 之间的索引,使代码如下所示:

Dim lb As ListBox

For i = 1 To 4

    Set lb = MyListBox(i)

    ' object "lb" now contains a reference to the appropriate ListBox control.
    ' (do something with lb)

Next i
于 2013-03-06T18:17:16.623 回答