我正在研究一个项目excel-vba,其中有许多类用于查询各种来源的数据。由于这些类是相似的,我试图确定是否使用通用接口并使用Implements
语句对我来说是一个可行的选项。一般来说,我对OOP相当陌生(尽管我试图用非VBA语言学习),并且我明白VBA中的OOP不会被期望。有没有办法为VBA中的一组类设置一组公共属性?
,我一直在阅读基本信息,指出设置您的接口类,我们将其称为IBaseInfo
:
Public Property Let LocationData(ByRef locDATA As udtLocData)
End Property
Public Property Let ReferenceDate(ByVal dteDATE As Date)
End Property
那么你实际上是在你的类,我们将其称为实施IBaseInfo
clsRate5pt
:
Implements IBaseInfo
Private Property Let IBaseInfo_LocationData(RHS As udtLocData)
End Property
Private Property Let IBaseInfo_ReferenceDate(ByVal RHS As Date)
End Property
在哪里我感到困惑是我如何实际访问模块中的对象级别的属性。我从VBA多态性参考msdn得到的是我需要实际声明IBaseInfo
类型的变量,将其设置为等于clsRate5pt
类型的对象,并通过该变量访问属性。如:
Sub TestIFace()
Dim o5PT As clsRate5Pt
Dim oInfo As IBaseInfo
Set o5PT = New clsRate5Pt
Set oInfo = o5PT
oInfo.LocationData = '// Some location Data
oInfo.ReferenceDate = '// Some Reference Date
End Sub
有没有一种方法来设置一组通用的接口,在vba一组类?是否需要Implements
,如果是的话,我做错了什么?
通过不同的对象来访问属性似乎是违反直觉的。如果clsRate5pt
是“执行”的界面,不应该有办法通过clsRate5pt
访问这些属性?
感谢蒂姆......据我了解你,我会做这样的事......'公共财产获取设置()作为clsSettings'实际在课堂上暴露了吗?这似乎更接近我所期待的。感谢您的帮助 –
是的,就是这样。 –