Excel VBA实现/继承

Excel VBA实现/继承,excel,vba,interface,Excel,Vba,Interface,我很难理解和使用实现,如果VBA不支持继承,我看不出这有什么用处 我正在测试下面的代码,不断收到错误: 编译错误: 对象模块需要为接口“~”实现“~” 接口:itTransmission Option Explicit Public pVENDOR As String Public Property Get VENDOR() As String End Property Public Property Let VENDOR(ByVal value As String) End Propert

我很难理解和使用
实现
,如果VBA不支持继承,我看不出这有什么用处

我正在测试下面的代码,不断收到错误:

编译错误:

对象模块需要为接口“~”实现“~”

接口:
itTransmission

Option Explicit

Public pVENDOR As String

Public Property Get VENDOR() As String
End Property
Public Property Let VENDOR(ByVal value As String)
End Property
基类:
cASN

Option Explicit
Implements ITransmission

Private Property Let ITransmission_pVENDOR(ByVal value As String)
   pVENDOR = value
End Property

Private Property Get ITransmission_pVENDOR() As String
   ITransmission_pVENDOR = pVENDOR
End Property
单元测试方法:
munitesting

Private Sub Test_cASN()

   Dim foo As cASN

   Set foo = New cASN

   foo.VENDOR = "Test"

End Sub
实现起来还是很新的,这是我想学习的东西,我已经做了大量的研究

问题1:

为什么我在尝试进行单元测试时会收到错误消息

问题2:


如果不支持继承,这里真正的好处是什么?

您实现的是
pVENDOR
,而不是两个
供应商
属性

我假设您希望接口是
VENDOR
属性的get/let

您的
Public pVENDOR As String
看起来像此属性的支持字段,因为接口不能包含实现,因此不需要它

界面应如下所示:

Public Property Get VENDOR() As String
End Property

Public Property Let VENDOR(ByVal value As String)
End Property
然后,当您实施它时:

Implements ITransmission

Private pVENDOR As String '// local implementation detail

Public Property Let ITransmission_VENDOR(ByVal value As String)
    pVENDOR = value
End Property

Public Property Get ITransmission_VENDOR() As String
    ITransmission_VENDOR = pVENDOR
End Property
并测试:

Private Sub Test_cASN()

   Dim foo As cASN

   Set foo = New cASN

   foo.ITransmission_VENDOR = "Test"

End Sub
这里真正的好处是什么


这本书可能会重复,非常感谢!我也发现了这个。。。这也是继承的最佳解决方案吗?另外,为了说明这一点。。。据我所知,
接口
本质上是一个类必须遵循的模板?因此,如果我有两个实现
itTransmission
接口的唯一类,那么这两个类必须包含这些Get/Let属性,这正是我试图实现的。是的。。。必须实现接口类的所有方法。