https://stackoverflow.com/questions/2136487/calculate-week-of-month-in-net
System.Globalization.GregorianCalendarがGetWeekOfYearメソッドを持っていて年の第何週か取得できるので、それを使って月の1日目の週番号と指定日の週番号の差で求める。
Public Function GetWeekOfMonth(dDate As Date) As Integer
Dim oCalendar = New System.Globalization.GregorianCalendar()
Dim nDateWeek = oCalendar.GetWeekOfYear(dDate, Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday)
Dim dMonthFirst = New DateTime(dDate.Year, dDate.Month, 1)
Dim nMonthFirstWeek = oCalendar.GetWeekOfYear(dMonthFirst, Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday)
Return nDateWeek - nMonthFirstWeek + 1
End Function