我正在试验 VBA 的接口(interface),我有点恼火。我读过的关于该主题的大部分内容都建议使用接口(interface)作为实现多态性的一种手段,这似乎在我的一些用例中有效。不幸的是,我遇到了一个问题。
我创建了一个类模块来定义我的接口(interface)iCanvasObject
然后我创建了一个类 cTable
实现 iCanvasObject
中的所有方法.到目前为止一切顺利,一切都按预期工作。
当我定义一个特定于 cTable
的方法时会出现此问题,而不是 iCanvasObject
的一部分.即使它的Public
我似乎无法从尺寸为 iCanvasObject
的变量访问它, 但实例化为 cTable
.
Dim tbl As iCanvasObject
Set tbl = New cTable
它在我可以忍受的 IntelliSense 中不可见,但是当我尝试直接调用该方法时,VBA 提示
Method or data member not found
错误。即使这个变量肯定是 cTable
类型有没有办法让我创建特定于
cTable
的方法?我可以在调用接口(interface)的多态性优势的同时调用吗?换句话说,如果我将变量标注为 iCanvasObject
,我是否严格限制在此界面中定义的内容?
最佳答案
这就是多态性的工作方式。如果您将其声明为 iCanvasObject
那么它就是这样,因此它没有 ctable
的任何成员不是来自iCanvasObject
, 除非您将其转换为 cTable
.
这与您使用 VBA 的事实无关。
关于VBA 接口(interface)和多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23661781/