Some logic:
Last Monday logic.
What is the first day of the new Year? Easy, 01/01/(parYear+1)
Say that first day is a Monday, what day do we want to find? The Monday before ie -7 days.
Is there an easy way to do it? Yes, Monday is Day 7 whenever we start counting from Tuesday. That is, Weekday(anydate, vbTuesday) = 7 if anydate is Monday. Subtract 7 for the date you want.
Ok, what if 1/1/(parYear+1) is a Tuesday, smartypants, what then? Using exactly the same logic, weekday(anydate, vbTuesday) = 1. Subtract 1 for the date you want.
Ahem, and if 1/1/(parYear+1) is a Friday? Weekday(anydate,vbTuesday) = 4. Subtract 4 for the date you want.
First Monday logic.
What is the first day of the year? 1/1/paryear
Say the first day is a Monday, what day do we want to find? That same day, ie add 0 days.
Is there an easy way to do it? Yes, we can derive 0 from Monday by subtracting the day in the week from 7. That is, 7 - Weekday(anydate,vbTuesday). Add this for the date you want.
And so on for other possible days.
Function FirstMonday(parYear as long) as date
FirstMonday = DateAdd("d", 7-Weekday(dateserial(paryear,1,1), vbTuesday), dateserial(paryear,1,1))
End Function
Jack