列出 VBA 2003 中类的属性



我已经搜索了所有内容,看看这个问题是否有一个简单的答案,但似乎没有......

我正在使用 Excel VBA 2003(是的,我知道它已经过时了,但我无法更改它),我只想列出给定自定义类中所有可读属性的名称和值。

我想做这样的事情:

类定义(对于名为 cFooBar 的类)

Option Explicit
Private pFoo As String
Private pBar As String
Public Property Get Foo() As String
Foo=pFoo
End Property
Public Property Get Bar() As String
Bar=pBar
End Property

调用代码

Dim myFooBar as cFooBar, P as Property
myFooBar=new cFooBar
For Each P in myFooBar.Properties
Debug.Print P.Name, P.Value
Next

当然,这是行不通的,因为自定义类似乎没有"属性"集合成员(或者至少没有你可以得到的集合成员),也没有"属性"类型。

有人知道解决这个问题的方法吗?

TIA,

坎贝尔

正如 John 上面提到的,VBA 不支持反射。这是我以前使用过的黑客。基本上,您可以创建一个集合或字典对象来按名称存储"属性"。

Option Explicit
Private pProperties As Object
Public Property Get Properties() As Object
    Set Properties=pProperties
End Property
Public Property Let Properties(p as Object) 
    Set pProperties = p
End Property

Sub Class_Initialize()
    Set pProperties = CreateObject("Scripting.Dictionary")
    'Add/instantiate your properties here
    pProperties("foo") = "this is foo"
    pProperties("bar") = "this is bar"

End Sub

调用代码

Dim myFooBar As New cFooBar, P As Variant
For Each P In myFooBar.Properties.Keys()
    Debug.Print P, myFooBar.Properties(P)
Next

最新更新