Function DateFirstMonday (AnyDate As Variant) As Variant
'   Given   : a date in variant format
'   returns : the date of the first monday of the month
    Dim IDay, IMonth, IYear As Integer
    
    IMonth = Month(AnyDate) 'faster to calculate month only one time
    IYear = Year(AnyDate)   'faster...
    DateFirstMonday = DateSerial(IYear, IMonth, 8 - Weekday(DateSerial(IYear, IMonth, 1), 3))
End Function

Function DayFirstMonday (AnyDate As Variant) As Integer
'   Given   : a date in variant format
'   returns : an integer number between 1 and 31 that is the
'             day of the month  of the first monday of the month
    DayFirstMonday = 8 - Weekday(DateSerial(Year(AnyDate), Month(AnyDate), 1), 3)
End Function
