创建属性Get / Let私有数组的过程

时间:2015-01-30 03:50:28

标签: arrays vba properties

我正在尝试使用公共属性Get / Let过程为类模块中的私有数组分配一些值。但是当我尝试获取值时,数组显示为空。这是为什么?

以下是相关代码:

Private pdt_RentStepDate(23) As Date

Public Property Get dt_RentStepDate(ByRef d1 As Integer) As Date
    dt_RentStepDate(d1) = pdt_RentStepDate(d1)
End Property

Public Property Let dt_RentStepDate(ByRef d1 As Integer, something As Date)
    pdt_RentStepDate(d1) = something
End Property

1 个答案:

答案 0 :(得分:0)

在Property Get过程中,在分配返回值时不要指定索引:

Public Property Get dt_RentStepDate(ByRef d1 As Integer) As Date
'   dt_RentStepDate(d1) = pdt_RentStepDate(d1)  ' <-- WRONG
    dt_RentStepDate = pdt_RentStepDate(d1)      ' <-- RIGHT
End Property

如果您指定索引,那么您实际上是使用参数d1pdt_RentStepDate(d1)调用Property Let,而不是为Property Get分配返回值。 (这没有效果,因为Property Let最终将pdt_RentStepDate(d1)设置为自身。)由于没有指定返回值,因此Property Get始终返回一个空Date。