Class 将对象传递给类方法:对象不';不支持此属性或方法

Class 将对象传递给类方法:对象不';不支持此属性或方法,class,excel,pass-by-reference,vba,Class,Excel,Pass By Reference,Vba,您好,我在excel 2013 vba中工作,我想将工作表对象传递给类函数: “类模块Class1” Sub receive(ByRef ws As Worksheet) msgbox ws.name End Sub 使用以下命令调用类方法receive: Sub passToClass() Dim ws as Worksheet Set ws = ThisWorkbook.Worksheets("sheet1") Dim myClass As New Class1 m

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

“类模块Class1”

Sub receive(ByRef ws As Worksheet)
    msgbox ws.name
End Sub
使用以下命令调用类方法receive:

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
我在概念上遗漏了什么


提前谢谢

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

myClass.receive ws
或者添加
Call
关键字:

Call myClass.receive(ws)
只有在以下情况下调用例程时才需要括号:

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

感谢您的回答和解释!