VBA链接定制类属性

  • 本文关键字:属性 链接 VBA vba class
  • 更新时间 :
  • 英文 :


我正在使用VBA自定义类玩(学习(,我无法弄清楚一件事,或者我什至不知道是否有可能(在VBA中继承限制(

我收集了有关从这篇文章中束缚的东西VBA类方法链接

在上面的链接中的示例中,您可以写

obj.Borders.Color '-> this will return long type of color value

但是您无法使用obj.Borders,因为Borders被声明为派生类,在Main类obj中声明,颜色是此派生类的属性。

我要弄清楚的是如何在自定义类中链接属性/方法

之类的东西
dim pvt as pivottable
set pvt = ....
pvt.pivotcache '-> method returns pivotcache object
pvt.pivotcache.memoryused '-> returns property of pivotcache object

任何简单的示例如何使用自定义类进行此操作。我似乎无法将我的头缠住。

预先感谢您的任何示例

当类具有具有另一个属性的类型的属性时,您可以像包含另一个包含另一个包含另一个盒子的框的框一样使用它们,依此类推。当属性不包含任何属性时,它是 atomic,并且仅包含一个像e.g的值。stringlong。示例

名为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的类。它具有Long类型的原子属性MemoryUsed

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

最新更新