Any public Sub, Function, or Property inside a class module can be called by preceding the call with an object reference:
Object.Procedure
In a DateRange class, a Sub could be used to add a number of days to the end date:
Public Sub AddDays(ByVal NoDays As Integer)
mEndDate = mEndDate + NoDays
End Sub
A Function could return the last day of the next month-end (note that GetFirstDayOfMonth would not be visible outside the class because it is private):
Public Function GetNextMonthEndDate() As Date
GetNextMonthEndDate = DateAdd("m", 1, GetFirstDayOfMonth())
End Function
Private Function GetFirstDayOfMonth() As Date
GetFirstDayOfMonth = DateAdd("d", -DatePart("d", mEndDate), mEndDate)
End Function
Procedures can accept arguments of any type, including references to objects of the class being defined.
The following example tests whether the current DateRange object has a starting date and ending date that includes the starting and ending date of another DateRange object.
Public Function ContainsRange(ByRef TheRange As DateRange) As Boolean
ContainsRange = TheRange.StartDate >= Me.StartDate And TheRange.EndDate <= Me.EndDate
End Function
Note the use of the Me notation as a way to access the value of the object running the code.