Vba 根据一个月的第一天计算出第一个日历星期六
基本上,我想做的是根据一个月的第一天找到一个月的第一个星期六。关于这一点,我得到了相互矛盾的信息 我可以让最终用户选择本月的第一个星期六,但我不想让他们自行决定这一令人印象深刻的壮举 例如,即将到来的一月份从周四开始。我想要的是点击一个按钮,上面写着JAN,然后VBA会查看2015日历年,并说第一个星期六在第三个星期六Vba 根据一个月的第一天计算出第一个日历星期六,vba,excel,Vba,Excel,基本上,我想做的是根据一个月的第一天找到一个月的第一个星期六。关于这一点,我得到了相互矛盾的信息 我可以让最终用户选择本月的第一个星期六,但我不想让他们自行决定这一令人印象深刻的壮举 例如,即将到来的一月份从周四开始。我想要的是点击一个按钮,上面写着JAN,然后VBA会查看2015日历年,并说第一个星期六在第三个星期六 如果可能的话。我的报告是SAT-SUN,SUMIFS过滤“>=”&(太阳日期)和“我用InputBox和MsgBox完成的,但是你应该从代码中得到想法 Sub TestIt()
如果可能的话。我的报告是SAT-SUN,SUMIFS过滤“>=”&(太阳日期)和“我用
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
为“报告周”创建更多的代码。尝试以下函数以返回本月的第一个星期六:
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
WorksheetFunction.Weekday(“2015年1月1日”,1)返回5,也就是星期四(如预期的那样)。从相关蛾类的第一天开始循环日期(以任何格式,甚至如我所示),直到你得到7(Sat)。我希望这就是你要找的。谢谢你,这很好用,就像其他答案一样。
Sub Test()
MsgBox (GetFirstSatInMonth(Date))
End Sub