基本上,我希望能够根据每月的第一天找到该月的第一个星期六。而且我得到有关此事的相互矛盾的信息。
我可以让最终用户选择本月的第一个星期六,但我宁愿不留下令人印象深刻的壮举。
例如,即将到来的1月份将在周四开始。我想要的是点击一个显示JAN的按钮然后VBA会查看2015日历年,并说第一个星期六是第三个星期六。
如果可能的话。我的报告按周SAT-SUN和SUMIFS过滤"> ="&(SUN DATE)和"< ="&(SAT DATE)。
所以我点击JAN,将日期设置为010115,Excel / VBA确实有点魔力,确定第一个SAT是第3个,SUM语句添加几天来设置每个报告周的日期范围。 / p>
如果答案是否定的,那很好,我只能坚持我的另一个想法。
答案 0 :(得分:1)
尝试使用以下功能在月中的第一个星期六返回:
Function GetFirstSatInMonth(ByVal initialDate As Date) As Date
Dim myDate As Date
myDate = DateSerial(Year(initialDate), Month(initialDate), 1)
Do While Weekday(myDate) <> vbSaturday
myDate = DateAdd("d", 1, myDate)
Loop
GetFirstSatInMonth = myDate
End Function
用法:
Sub Test()
MsgBox (GetFirstSatInMonth(Date))
End Sub
答案 1 :(得分:0)
我是使用InputBox
和MsgBox
完成的,但您应该从代码中获取想法。
Sub TestIt()
Dim MonthPick As Integer, YearPick As Integer, FirstSat as Date
MonthPick = InputBox("What Month (as integer number)")
YearPick = InputBox("What Year (as 4 digit integer number)")
For x = 1 To 7
If Weekday(DateSerial(YearPick, MonthPick, x)) = 7 Then '7 for Saturday by default
FirstSat = DateSerial(YearPick, MonthPick, x)
MsgBox FirstSat & " is the first Saturday"
Exit For
End If
Next x
End Sub
您可以使用变量FirstSat
为“报告周”创建更多代码。