我正在研究一個項目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'實際在課堂上暴露了嗎?這似乎更接近我所期待的。感謝您的幫助 –
是的,就是這樣。 –