向类添加属性

Property 过程是一系列语句,用于检索或修改模块上的自定义属性。

有三种类型的属性访问器:

  1. 返回属性值的 Get 过程。
  2. Let 过程,为对象分配(非 Object)值。
  3. 一个 Set 程序,分配 Object 参考。

属性访问器通常成对定义,每个属性使用 GetLet / Set。仅具有 Get 过程的属性将是只读的,而仅具有 Let / Set 过程的属性将是只写的。

在以下示例中,为 DateRange 类定义了四个属性访问器:

  1. StartDate读/写 )。表示范围中较早日期的日期值。每个过程都使用模块变量 mStartDate 的值。
  2. EndDate读/写 )。表示范围中较晚日期的日期值。每个过程都使用模块变量 mEndDate 的值。
  3. DaysBetween只读 )。计算的整数值,表示两个日期之间的天数。因为只有 Get 过程,所以不能直接修改此属性。
  4. RangeToCopy只写 )。Set 过程用于复制现有 DateRange 对象的值。
Private mStartDate As Date                ' Module variable to hold the starting date
Private mEndDate As Date                  ' Module variable to hold the ending date
  
' Return the current value of the starting date
Public Property Get StartDate() As Date
    StartDate = mStartDate
End Property

' Set the starting date value. Note that two methods have the name StartDate
Public Property Let StartDate(ByVal NewValue As Date)
    mStartDate = NewValue
End Property
  
' Same thing, but for the ending date
Public Property Get EndDate() As Date
    EndDate = mEndDate
End Property
  
Public Property Let EndDate(ByVal NewValue As Date)
    mEndDate = NewValue
End Property

' Read-only property that returns the number of days between the two dates
Public Property Get DaysBetween() As Integer
    DaysBetween = DateDiff("d", mStartDate, mEndDate)
End Function

' Write-only property that passes an object reference of a range to clone
Public Property Set RangeToCopy(ByRef ExistingRange As DateRange)

Me.StartDate = ExistingRange.StartDate
Me.EndDate = ExistingRange.EndDate

End Property