【问题标题】:Passing object to Class method: Object doesn't support this property or method将对象传递给类方法:对象不支持此属性或方法
【发布时间】:2015-08-18 16:20:27
【问题描述】:

您好,我正在使用 excel 2013 vba,我想将工作表对象传递给类函数:

'类模块 Class1'

Sub receive(ByRef ws As Worksheet)
    msgbox ws.name
End Sub

调用类方法接收:

Sub passToClass()
  Dim ws as Worksheet
  Set ws = ThisWorkbook.Worksheets("sheet1")
  Dim myClass As New Class1
  myClass.receive(ws) ' Run-time Error '438': Object doesn't support this property or method
End Sub

一个有效的简单测试是同一模块中的两个子例程:

Sub pass()
   Dim ws as Worksheet
   Set ws = ThisWorkbook.Worksheets("sheet1")
   call receive(ws)
End Sub

Sub Receive(ByRef ws As Worksheet)
    msgbox ws.name
End Sub

我在概念上缺少什么?

提前致谢!

【问题讨论】:

    标签: class excel pass-by-reference vba


    【解决方案1】:

    您需要从调用中删除括号:

    myClass.receive ws
    

    或添加Call 关键字:

    Call myClass.receive(ws)
    

    仅在以下情况下调用例程时才需要括号:

    • 你使用Call关键字;或
    • 您正在调用一个函数并且使用 返回值;或
    • 您明确需要评估或取消引用 您正在传递的变量。

    【讨论】:

    • 感谢您的回答和解释!
    猜你喜欢
    • 2013-10-05
    • 1970-01-01
    • 2020-05-19
    • 2015-07-02
    • 2019-04-09
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多