당신은 모든 옵션이 필요하지 않으면이를 단순화 할 수 있지만, 잘 대해 같습니다 당신이 만들 수 있는지 꽤 괜찮아
Option Explicit
Private Function WeekDate(_
ByVal Year As Long, _
ByVal Week As Long, _
Optional ByVal FirstWholeWeekIs1 As Boolean, _
Optional ByVal FirstDayOfWeek As VbDayOfWeek = vbUseSystemDayOfWeek) As Date
Dim YearDate As Date
Dim WeekdayOffset As Long
Dim WeekOffset As Long
YearDate = DateSerial(Year, 1, 1)
WeekdayOffset = Weekday(YearDate, FirstDayOfWeek) - 1
If WeekdayOffset <> 0 Then
YearDate = DateAdd("d", -WeekdayOffset, YearDate)
WeekOffset = IIf(FirstWholeWeekIs1, 0, 1)
Else
WeekOffset = 1
End If
WeekDate = DateAdd("ww", Week - WeekOffset, YearDate)
End Function
Private Sub Form_Load()
Dim Year As Long
Dim Week As Long
AutoRedraw = True
Year = 2015
Week = 1
Print Year, Week, WeekDate(Year, Week)
Print Year, Week, WeekDate(Year, Week, FirstWholeWeekIs1:=True)
Week = 2
Print Year, Week, WeekDate(Year, Week)
Print Year, Week, WeekDate(Year, Week, FirstDayOfWeek:=vbMonday)
Year = 2016
Week = 41
Print Year, Week, WeekDate(Year, Week, FirstWholeWeekIs1:=True)
Year = 2017
Week = 1
Print Year, Week, WeekDate(Year, Week, FirstWholeWeekIs1:=False)
Print Year, Week, WeekDate(Year, Week, FirstWholeWeekIs1:=True)
End Sub
아닌 경우 조정.
내가 변수로 년도를 사용하지 않을 것입니다. ms 액세스 기능이기도합니다. – dbmitch