【问题标题】:Implementing my own interface in VBA - Error: Object module needs to implement 'x' for interface 'y'在 VBA 中实现我自己的接口 - 错误:对象模块需要为接口“y”实现“x”
【发布时间】:2011-03-11 10:09:20
【问题描述】:

如何实现我的类ClsInterface,它有这个代码:

Public Function add(x As Integer, y As Integer) As Integer
End Function

在我的班级Class2,有这个代码:

Implements ClsInterface

Public Function add(x As Integer, y As Integer) As Integer
add = x + y
End Function

我的测试代码是

Public Sub test()
Dim obj As New Class2
MsgBox obj.add(5, 2)
End Sub

这总是会出现以下错误:

Microsoft Visual Basic
编译错误:

对象模块需要为接口'ClsInterface'实现'add'
好的/帮助

但没有关于 Microsoft 帮助的帮助(当我按下帮助按钮时)。

有什么想法吗?

【问题讨论】:

标签: oop vba excel


【解决方案1】:

您的 Class2 必须如下所示:

Implements ClsInterface

Private Function ClsInterface_add(x As Integer, y As Integer) As Integer
    ClsInterface_add = x + y
End Function

查看 Class2 代码窗口顶部的下拉框,可以看到可以引用的基础对象; 类或ClsInterface。

在你想要的测试代码中:

Dim obj As New ClsInterface

如果你想跨接口调用。

我还建议以ISomeDescription 的形式命名接口,然后使用Dim 然后Set 而不是Dim As New。

【讨论】:

  • 谢谢您,我按照您的说明操作,没有任何错误,但值始终为 0 !!!虽然应该是 7,有什么想法吗?
  • 在您的私有函数 ClsInterface_add... 中,您需要 'Return x + y' 而不是 'add = x + y',否则永远不会返回 x+y 的值。
  • 您需要返回使用; ClsInterface_add = x + y
  • 这不是使用接口,而是用 clsinterface 替换 class2 作为类
  • 我只是找了一个多小时如何在 VB6 中自动实现该死的 COM 接口,直到我找到了下拉框的提示。谢谢你。
猜你喜欢
  • 2019-01-07
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
相关资源
最近更新 更多