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

Posted

技术标签:

【中文标题】将 ListBox 控件对象传递给需要 ListBox 作为参数的函数【英文标题】:Passing a ListBox control object to a function requiring a ListBox as argument 【发布时间】:2015-09-08 09:35:20 【问题描述】:

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

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 Control Object 转换为 ListBox 对象

Dim list As ListBox
Set list = ctl

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

【问题讨论】:

【参考方案1】:

去掉括号,所以:

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

        Save ctl

    End If
Next ctl

VBA 对括号非常挑剔。

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

【讨论】:

谢谢,这行得通。从来没有在 vba 的括号后面。

以上是关于将 ListBox 控件对象传递给需要 ListBox 作为参数的函数的主要内容,如果未能解决你的问题,请参考以下文章

〝WPF〞中的〝ListBox〞、〝ListView〞和〝DataGridView〞有啥区别?

WPF中的ListBox,ListView和DataGridView有啥区别

如何通过 HtmlDocument.InvokeScript 将对象作为参数传递给 javascript

html 将变量/参数传递给用户控件

我应该将啥对象传递给需要 Void 的函数!在参数中? (科特林)

将 multiprocessing.Value 对象传递给 ctype 函数?