VBA Excel类模块中的子属性

时间:2014-02-13 22:52:36

标签: vba class excel-vba excel

我有一个名为cTask的模块,其中包含以下代码:

Private pMile As String

Public Property Get Mile() As String
Mile = pMile
End Property

Public Property Let Mile(Value As String)
pMile = Value
End Property

所以在我的sub中让我说我发起

dim currtask as cTask

我想写

curtask.Mile=TIM

以及

curtask.Mile.stat=2

就像

一样
worksook("qqq").sheets("okko").cells(1,1)...

如何在我的班级中执行嵌套属性?

编辑: 所以在一个名为cTask的课程

Private pMile As cMile
Public Property Get Mile() As String
Mile = pMile
End Property

Public Property Let Mile(Value As String)
pMile = Value
End Property

在课堂cMile中我有

Private pstatus As String

Public Property Get status() As String
status = ppstatus
End Property

Public Property Let status(Value As String)
pstatus = Value
End Property

然后在我的潜艇中我所做的就是宣布

dim curtask as cTask

这是对的吗?它不起作用所以我一定错过了什么

1 个答案:

答案 0 :(得分:3)

嵌套对象的示例实现

cTask:

Private pMile As cMile

Public Property Get Mile() As cMile
    Set Mile = pMile
End Property

Public Property Set Mile(Value As cMile)
    Set pMile = Value
End Property

Private Sub Class_Initialize()
    Set Me.Mile = New cMile
End Sub

cMile:

Private pStatus As String
Private pNumber As Long

Public Property Get Status() As String
    Status = pStatus
End Property

Public Property Let Status(Value As String)
    pStatus = Value
End Property

Public Property Get Number() As Long
    Number = pNumber
End Property

Public Property Let Number(Value As Long)
    pNumber = Value
End Property

常规模块:

Sub Tester()

    Dim Task As New cTask

    Task.Mile.Status = "Done"
    Task.Mile.Number = 11

    Debug.Print Task.Mile.Status, Task.Mile.Number

End Sub

原始问题中缺少的是:

 curtask.Mile=TIM

目前还不清楚你的意思是什么:它看起来像是cMile类的“默认属性”,但在VBA中并不支持(或者至少不容易)。