【问题标题】:VBA function for Controls in Userform用户窗体中控件的 VBA 函数
【发布时间】:2018-11-26 12:50:06
【问题描述】:

我对 VBA 很陌生,所以如果这个问题看起来很愚蠢,我深表歉意:我已经设置了一个包含一些控件的用户窗体,并创建了一个名为 ResetMyField 的函数,如下所示:

Function ResetMyField(MyField As Object)
    If MyField = ProjectReference Then
        'do something different and then
    End If
    MyField.Value = ""
End Function

当我使用ResetMyField(ProjectReference) 调用此函数时,VBA 出现 424 错误(需要对象)。我应该在函数中将MyField 声明为不同类型的变量吗?

函数和我调用它的点都在 Userform 模块中。

任何帮助将不胜感激。

【问题讨论】:

  • ProjectReference 是我在用户窗体上的一个组合框的名称 - 如果不清楚,请见谅
  • 哪一行会抛出这个错误?如果您不返回可以使用过程 (Sub) 的东西,为什么要使用 function。您能否edit 您的问题并添加您如何准确调用ResetMyField 的代码?如果您正在测试 2 个对象是否相等,我建议您测试它们的名称是否相等 MyField.Name = ProjectReference.Name

标签: excel vba function userform


【解决方案1】:

ResetMyField(ProjectReference)with the parentheses 尝试将ProjectReference 组合框的default property 传递到ResetMyField。组合框的默认属性是Value,这不是Object,而ResetMyField 需要Object,因此会出现错误(“需要对象”)。

Remove the parentheses:

ResetMyField ProjectReference

还要注意If MyField = ProjectReference Then 再次尝试比较MyFieldProjectReference 的默认属性,在组合框的情况下这意味着If MyField.Value = ProjectReference.Value Then
如果你想知道MyFieldisProjectReference,那就是

If MyField Is ProjectReference Then

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多