我正在玩(学习)VBA自定义类,我无法弄清楚一件事,或者我甚至不知道是否可以做(VBA中的继承限制)
我从这篇文章中收集了关于链接的内容 VBA Class Method Chaining
在上面链接的示例中,您可以编写
obj.Borders.Color '-> this will return long type of color value
但是你不能使用obj.Borders
,因为Borders
被声明为派生类,在主类obj
中声明,颜色是此派生类的属性。
我想弄清楚的是如何在自定义类中链接属性/方法
像
这样的东西dim pvt as pivottable
set pvt = ....
pvt.pivotcache '-> method returns pivotcache object
pvt.pivotcache.memoryused '-> returns property of pivotcache object
如何使用自定义类执行此操作的任何简单示例。我好像无法绕过这个。
提前感谢您的任何示例
答案 0 :(得分:0)
当一个类具有一个具有另一个属性的类型的属性时,您可以像使用另一个包含另一个包含...的框的框一样使用它们,依此类推。如果该属性不包含任何属性,则它为atomic
并且仅包含一个值,例如string
或long
。实施例
名为
类型的对象的引用Pivottable
的顶级课程。包含对Pivotcache
Private m_pivotcache As Pivotcache
Private Sub Class_Initialize()
Set m_pivotcache = New Pivotcache
End Sub
Public Property Get Pivotcache() As Pivotcache
Set Pivotcache = m_pivotcache
End Property
Public Property Let Pivotcache(ByVal vNewPivotcache As Pivotcache)
Set m_pivotcache = vNewPivotcache
End Property
另一个名为
Pivotcache
的类。它具有MemoryUsed
类型的原子属性Long
。
Private m_memoryused As Long
Private Sub Class_Initialize()
m_memoryused = 0
End Sub
Public Property Get MemoryUsed() As Long
MemoryUsed = m_memoryused
End Property
Public Property Let MemoryUsed(ByVal vNewMemoryUsed As Long)
m_memoryused = vNewMemoryUsed
End Property
在标准模块中测试
Sub test()
Dim pvt As Pivottable
Set pvt = New Pivottable
pvt.Pivotcache.MemoryUsed = 123456789
Debug.Print pvt.Pivotcache.MemoryUsed
End Sub