将 ListBox 控件对象传递给需要 ListBox 作为参数的函数

Passing a ListBox control object to a function requiring a ListBox as argument

我正在查看表单中的所有控件元素,并希望将所有列表框传递给另一个函数。 代码如下所示:

Dim ctl As Control
For Each ctl In Me.Controls
    If ctl.ControlType = acListBox Then

        Save (ctl)

    End If
Next ctl

Private Sub Save(list As ListBox)
    'Do something with list
End Sub

它给了我 424 运行时错误,告诉我需要一个对象。

当我尝试使用

Save (ctl.Object)

我会收到 2455 运行时错误。

编辑:我还尝试使用

将 ctl 控制对象转换为 ListBox 对象
Dim list As ListBox
Set list = ctl

然后它告诉我与第一个示例相同的信息(错误 424)

去掉括号,所以:

Dim ctl As Control
For Each ctl In Me.Controls
    If ctl.ControlType = acListBox Then

        Save ctl

    End If
Next ctl

VBA对括号很挑剔

我强烈建议您使用 Save 以外的其他名称作为您的函数名称,这很容易打乱 VBA。