Wrap Date Functions in a Class

I’ve been working on a class module called clsDateInfo that returns various properties of a given date, and using it in some monthly trend graphs. I had to come up with the number of weekdays?not counting weekends?a given date was from the first of the month. The clsDateInfo.WeekDayOfMonth property returns the answer in a flash:

 Option Explicit' clsDateInfo' Chuck Spohr 9/23/1999' Set the DateToCheck property of this object and ' the other properties will return various useful ' values about that datePrivate mdtDate As DatePublic Property Let DateToCheck(pdtDate As Date)	mdtDate = pdtDateEnd PropertyPublic Property Get DateToCheck() As Date	DateToCheck = mdtDateEnd PropertyPublic Property Get WeekDayOfMonth() As Integer	If Me.DayOfWeek = vbSunday Or Me.DayOfWeek = _		vbSaturday Then		WeekDayOfMonth = 0	Else		WeekDayOfMonth = (5 * (Me.WeekOfMonth - 1)) - _			Me.FirstDayOfWeekOfMonth + Me.DayOfWeek + 1	End IfEnd PropertyPublic Property Get WeekOfMonth() As Integer	WeekOfMonth = Week  Me.FirstWeekOfMonth + 1End PropertyPublic Property Get FirstWeekOfMonth() As Integer	FirstWeekOfMonth = DatePart("ww", Me.FirstDayOfMonth)End PropertyPublic Property Get FirstDayOfWeekOfMonth() As Integer	FirstDayOfWeekOfMonth = DatePart("w", Me.FirstDayOfMonth)End PropertyPublic Property Get Week() As Integer	Week = DatePart("ww", mdtDate)End PropertyPublic Property Get FirstDayOfMonth() As Variant	FirstDayOfMonth = DateSerial(DatePart("yyyy", _		mdtDate), DatePart("m", mdtDate), 1)End PropertyPublic Property Get DayOfWeek() As Integer	DayOfWeek = DatePart("w", mdtDate)End PropertyPrivate Sub Class_Initialize()	mdtDate = Now()End Sub
Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: