将对象传递给 Class 方法:对象不支持此 属性 或方法
Passing object to Class method: Object doesn't support this property or method
您好,我在 excel 2013 vba 工作,我想将工作表对象传递给 class 函数:
'Class module Class1'
Sub receive(ByRef ws As Worksheet)
msgbox ws.name
End Sub
调用 class 方法接收:
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
关键字;或
- 您正在调用函数 and 使用
return 值;或
- 您明确需要评估或取消引用
您传递的变量。
您好,我在 excel 2013 vba 工作,我想将工作表对象传递给 class 函数:
'Class module Class1'
Sub receive(ByRef ws As Worksheet)
msgbox ws.name
End Sub
调用 class 方法接收:
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
关键字;或 - 您正在调用函数 and 使用 return 值;或
- 您明确需要评估或取消引用 您传递的变量。