我正在尝试在VBA中尽可能接近函数指针/抽象类。
我有一个名为VerificationManager
的类,用于验证一些电子表格中的单元格是否匹配。根据使用的信息和电子表格,这将以不同的方式完成。
我想通过指定要调用的方法的字符串来使代码可重复使用,使用Application.Run
函数。这样我就可以改写该函数。
如果我使用Java或C#,我将能够扩展抽象类并重写函数的内部。 如果我使用JavaScript,我可以将函数存储在变量中,并将变量传递给类,然后从那里调用它。
在我的类中,我有一个名为"verificationModule"的公共属性,我将其设置为要调用的函数的名称。
Sub VerifyWorkLocations(empLoc As EmployerLocation)
...
For i = 0 To empLoc.numOfEmp
Application.Run verificationModule, empLoc.taxdescmatch, empLoc.employees(i)
Next i
...
End Sub
然而,当我尝试调用Application.Run
时,我收到以下错误:
编译错误:
"只有在公共对象模块中定义的用户定义类型才能被强制转换为变体或传递给迟绑定函数"
我已经尝试将我的用户定义类型放置在Class Module
中,但它基本上说类模块不是类型的正确位置。
Sub main()
中添加以下内容:Dim v as variant: v = xxx
。当你尝试使用 UDT 参数调用Application.Run
时也会发生同样的情况。 - GSerg