经试用,非常好用。看了代码,难度要比《计算器》代码难。 可能因为日期系统的原因,星期位置有出入。 k = Weekday(DateValue(Mn & "/1/" & Yn)) 我改成:k = Weekday(DateValue(Yn & "/" & Mn & "/1 ")),问题解决。 我还把这一段优化一下: Function GetMonthEndNumber(Yn As Integer, Mn As Integer) As Integer '返回某月的天数 Dim ss, date1 As String Dim i, j As Integer ss = "101010110101" If Mn <> 2 Then GetMonthEndNumber = 30 + Val(Mid(ss, Mn, 1)) Else '若是2月份,则需要专门确定 For i = 28 To 32 date1 = (Mn & "/" & i & "/" & Yn) '利用了isdate函数来推定 If IsDate(date1) Then j = i Else GetMonthEndNumber = j Exit For End If Next i End If End Function 优化成: Function GetMonthEndNumber(Yn As Integer, Mn As Integer) As Integer '返回某月的天数 If Mn = 12 Then GetMonthEndNumber = 31 Else GetMonthEndNumber = Day(DateValue(Yn & "/" & Mn + 1 & "/1") - 1) End If End Function
|