Vba 根据一个月的第一天计算出第一个日历星期六

Vba 根据一个月的第一天计算出第一个日历星期六,vba,excel,Vba,Excel,基本上,我想做的是根据一个月的第一天找到一个月的第一个星期六。关于这一点,我得到了相互矛盾的信息 我可以让最终用户选择本月的第一个星期六,但我不想让他们自行决定这一令人印象深刻的壮举 例如,即将到来的一月份从周四开始。我想要的是点击一个按钮,上面写着JAN,然后VBA会查看2015日历年,并说第一个星期六在第三个星期六 如果可能的话。我的报告是SAT-SUN,SUMIFS过滤“>=”&(太阳日期)和“我用InputBox和MsgBox完成的,但是你应该从代码中得到想法 Sub TestIt()

基本上,我想做的是根据一个月的第一天找到一个月的第一个星期六。关于这一点,我得到了相互矛盾的信息

我可以让最终用户选择本月的第一个星期六,但我不想让他们自行决定这一令人印象深刻的壮举

例如,即将到来的一月份从周四开始。我想要的是点击一个按钮,上面写着JAN,然后VBA会查看2015日历年,并说第一个星期六在第三个星期六


如果可能的话。我的报告是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