访问VBA级联方法

时间:2015-10-01 16:11:25

标签: vba access-vba

如何为自定义类级联方法?

我正在处理的是一个使用日期的自定义类。

我把这个日期作为财产。然后我想根据相关的方法返回日期。例如:

InputDate.AdjustToFirst

因此,如果我输入5/15/2015,则上述内容将于2015年5月1日返回。

同样可以这样做:

InputDate.AdjustToFirst.ReduceOneYear

因此,如果输入5/15/2015,则返回将是5/1/2014。

另外

InputDate.ReduceOneYear

2015年5月15日将于5/15/2014返回。

我知道DateSerial,我只是想学习如何做到这一点。这个想法类似于VB variable.ToString方法。

1 个答案:

答案 0 :(得分:3)

你可以让函数简单地返回一个新对象(method chaining,正如Fred Wilson所提到的那样)。这是我称为MyDate的一个小类的一个小例子:

Private m_date As Date

Public Sub Init(ByVal d As Date)
m_date = d
End Sub

Public Function ToString() As String
ToString = m_date
End Function

Public Function AddYear(y As Integer) As MyDate
Dim newDate As MyDate
Set newDate = New MyDate
newDate.Init (DateAdd("yyyy", y, m_date))
Set AddYear = newDate
End Function

Public Function AddMonth(m As Integer) As MyDate
Dim newDate As MyDate
Set newDate = New MyDate
newDate.Init (DateAdd("m", m, m_date))
Set AddMonth = newDate
End Function

现在,您可以使用AddYearAddMonth作为链函数:

Dim d As MyDate
Set d = New MyDate
d.Init (Now)
MsgBox d.AddYear(2).AddMonth(4).ToString()