我试图在 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
我收到以下错误:
编译错误:
“只有在公共对象模块中定义的用户定义类型才能被强制转换为变体或从变体强制转换或传递给后期绑定函数”
我已经尝试将我的用户定义类型放在 a 中,Class Module
但它基本上说类模块是类型的错误位置。