我正在尝试将对象传递给新子,但仍然遇到ByRef Mismatch错误。
我已将我的对象声明为:
Dim targetWorkbook
Set targetWorkbook = New CWorkbooks
我正在使用以下方式调用我的潜艇:
checkbook targetWorkbook
我的子设置为:
Sub checkbook(targetWorkbook As CWorkbooks)
'Checking if passthrough is working
End Sub
感谢任何帮助,我的类型是一致的,所以我不知道为什么会这样。
谢谢!
答案 0 :(得分:1)
Sub Foo()
'single class object
Dim myClass1 As New clsClass
myClass1.StringName = "cls1"
Call Par(myClass1)
'or class array
Dim myClass2(1 To 5) As New clsClass
myClass2(1).StringName = "cls2"
Call Par(myClass2)
End Sub
Sub Par(ByRef lClass As Variant) 'same function call used for both
'Debug.Print lClass.StaffName & vbNewLine 'single class object
'Debug.Print lClass(1).StaffName & vbNewLine 'array version
End Sub
谷歌把我带到这里来解决相同的问题,但是发现在Foo()是一个模块而Par()是一个工作表,试图传递类数组的情况下,缺少的答案根本不起作用。
答案 1 :(得分:0)
我能够用编译器复制你的问题。以下传递编译器并运行。您将TargetWorkbook
声明为Variant,然后将其设置为CWorkbooks - 这是有效的,但在传递给子时却没有。
Sub main()
Dim TargetWorkbook As CWorkbooks
Set TargetWorkbook = New CWorkbooks
checkbook TargetWorkbook
End Sub
Sub checkbook(ByRef TargetWorkbook As CWorkbooks)
'Checking if passthrough is working
End Sub