Algo que he visto por ahi es que se puede hacer que weekday sea 1 para lunes, 2 para marte,etc .
Seria cambiando la funcion de esta forma:
Public Function GetWeekdayMonthStartsOn(dAnyDayInTheMonth)
Dim dTemp
dTemp = DateAdd("d", -(Day(dAnyDayInTheMonth) - 1), dAnyDayInTheMonth)
'ESTO ES LO QUE CAMBIO
'GetWeekdayMonthStartsOn = WeekDay(dTemp)
'poniedolo asi lo cambio al formato español
GetWeekdayMonthStarts = WeekDay((dTemp),2)
End Function
Pero no se como modificar los bucles correctamente