VBA代码库12:处理日期和时间

2021-07-12 16:16:33 浏览数 (1)

本文中的代码来自于www.cpearson.com,特辑录于此,方便在需要时参考。

下面的过程和函数代码用于处理日期和时间。

指定年的第一个星期一

下面的函数返回指定年的第一个星期一的日期。

Public Function YearStart(WhichYear As Integer) As Date

Dim WeekDay As Integer

Dim NewYear As Date

NewYear =DateSerial(WhichYear, 1, 1)

WeekDay =(NewYear - 2) Mod 7

If WeekDay < 4 Then

YearStart = NewYear - WeekDay

Else

YearStart = NewYear - WeekDay 7

End If

End Function

注意,本文下面的程序将会使用这个函数。

指定周数的星期一

下面的函数返回指定年指定周的星期一的日期。

Public Function WeekStart(WhichWeek As Integer,WhichYear As Integer) As Date

WeekStart= YearStart(WhichYear) ((WhichWeek - 1) * 7)

End Function

判断是否闰年

下面的函数在指定年是闰年时返回TRUE,否则返回FALSE。

Public Function IsLeapYear(Y As Integer)

IsLeapYear = Month(DateSerial(Y, 2, 29)) = 2

End Function

某星期第几天的日期

下面的函数返回指定年月的指定周的指定天的日期,例如,Y=2021,M=6,N=2,DOW=3,将返回2021年6月第2周第3天的日期,即2021年6月8日。默认情况下,星期日=1,星期六=7。

Public Function NthDayOfWeek(Y As Integer, M As Integer, N As Integer, DOW As Integer) As Date

NthDayOfWeek = DateSerial(Y, M, (8 - WeekDay(DateSerial(Y, M, 1), (DOW 1) Mod 8)) ((N - 1) * 7))

End Function

计算年龄

下面的函数计算年龄,其中Date1代表出生日期。

Function Age(Date1 As Date, Date2 As Date) As String

Dim Y As Integer

Dim M As Integer

Dim D As Integer

Dim Temp1 As Date

Temp1 =DateSerial(Year(Date2), Month(Date1), Day(Date1))

Y =Year(Date2) - Year(Date1) (Temp1 > Date2)

M =Month(Date2) - Month(Date1) - (12 * (Temp1 > Date2))

D =Day(Date2) - Day(Date1)

If D <0 Then

M = M- 1

D =Day(DateSerial(Year(Date2), Month(Date2) 1, 0)) D 1

End If

Age = Y& "年"& M & "月"& D & "日"

End Function

使用Find方法查找日期

由于Excel是以系列号数值来保存日期的,因此使用Find方法查找日期需要一些技巧。例如,要查找工作表中输入的日期“1977-6-20”,可以使用语句:

Set FoundCell =Cells.Find(What:=DateValue("1977-6-20"), LookIn:=xlFormulas)

在编程中,往往要使用VBA代码来处理日期,上述代码可供类似情形参考。

0 人点赞