我在访问表单上有一个组合框,用户可以从下拉列表中选择特定年份,例如2014年。此表单上存在另一个组合框,其中周数从1到53下拉。这两个组合框未链接。 (或者我必须链接/绑定它们吗?)
此外,此表单上有两个名为" WeekStart" 和" WeekEnd" 的文本框。
我想要做的是在" WeekStart" 和" WeekEnd&中填充所选周数和年份的周开始日期和结束日期。 #34; 文本框。我星期天开始我的一周。我将此代码放在"周数" 组合框的" After Update" 事件中。
Me.WeekStart = DateSerial(Me.cboYear, 1, Me.cboWeekNum * 7)
但我知道这不对,而且我被困了。任何帮助,将不胜感激。而且,我必须将周数限制在一年中吗?如果是这样,我该怎么做呢。谢谢
答案 0 :(得分:2)
您可以使用VBA功能计算周的开始日期。例如,使用如下形式:
你可以使用像这样的表格代码
Option Compare Database
Option Explicit
Private Sub cboWeekNum_AfterUpdate()
UpdateStartEndDates
End Sub
Private Sub cboYear_AfterUpdate()
UpdateStartEndDates
End Sub
Private Sub UpdateStartEndDates()
Me.txtWeekStart.Value = WeekStartDate(Me.cboYear.Value, Me.cboWeekNum.Value)
Me.txtWeekEnd.Value = DateAdd("d", 6, Me.txtWeekStart.Value)
End Sub
Private Function WeekStartDate(yyyy As Integer, ww As Integer) As Date
' per ISO 8601, week starts on Monday
Dim Jan1 As Date
Jan1 = DateSerial(yyyy, 1, 1)
Dim Jan1Weekday As Integer
Jan1Weekday = Weekday(Jan1, vbThursday)
Dim FirstThursday As Date
' per standard, Week 1 contains the first Thursday of the year
FirstThursday = DateAdd("d", IIf(Jan1Weekday = 1, 0, 8 - Jan1Weekday), Jan1)
' back up 3 days to Monday, then add 7 days for each week after Week 1
WeekStartDate = DateAdd("d", -3 + (7 * (ww - 1)), FirstThursday)
End Function