使用VBA的日期函数可以对日期进行各种计算,如下面的代码所示: Sub DatFunctions() DimStr As String DimWeek As String Str= InputBox('请输入日期:') If Len(Str)> 0 Then If IsDate(Str) Then Select Case Weekday(Str,vbMonday) Case 1 Week = '一' Case 2 Week = '二' Case 3 Week = '三' Case 4 Week = '四' Case 5 Week = '五' Case 6 Week = '六' Case 7 Week = '日' End Select MsgBox '你输入的日期是' & DateValue(Str) & Chr(13) _ & '是' & Year(Str) & '年的第' & DatePart('q',Str) & '季度' &Chr(13) _& '是星期' & Week & Chr(13) & '距离今天有' & Abs(DateDiff('d',Date,Str)) & '天' & Chr(13) & '60天后的日期是' & DateAdd('d',60,Str) Else MsgBox '请输入正确格式的日期!' End If EndIf End Sub 代码解析: DatFunctions过程在对话框中输入日期后使用各种日期函数对其进行计算并用消息框显示。 第4、5行代码使用InputBox函数显示一个对话框,供用户在对话框中输入一个日期。 第6行代码使用IsDate函数判断输入的日期是否正确。IsDate函数返回Boolean值,指出一个表达式是否可以转换成日期,语法如下: IsDate(expression) 参数expression是必需的,日期表达式或字符串表达式,如果表达式是一个日期,或者可以作为有效日期识别,则IsDate函数返回True,否则返回False。 第7行到第22行代码使用Weekday函数判断所输入的日期是星期几。Weekday函数返回一个整数,代表某个日期是星期几,语法如下: Weekday(date,[firstdayofweek]) 参数date是必需的,能够表示日期的 Variant、数值表达式、字符串表达式或它们的组合。 参数firstdayofweek是可选的,指定一星期第一天的常数,如表格所示。 Weekday函数返回一个1到7之间的整数,当firstdayofweek参数设置为vbMonday(2)时,返回1时说明是星期一,以此类推。 第23行代码根据系统中指定的短日期格式来显示所输入的日期。DateValue函数的语法如下: DateValue(date) 参数date是必需的,任何表达式,表示从 100 年 1 月1 日到 9999 年12 月 31 日之间的一个日期。如果是一个字符串,且其内容只有数字以及分隔数字的日期分隔符,则 DateValue函数就会根据系统中指定的短日期格式来识别月、日、年的顺序。DateValue函数也识别明确的英文月份名称,全名或缩写均可。例如,除了12/30/1991和12/30/91 之外,DateValue函数也能识别December30,1991 和Dec 30,1991。 如果date参数中略去了年这一部分,DateValue函数就会使用由计算机系统日期设置的当前年份。 第24行代码判断输入的日期的季度。DatePart函数返回一个包含已知日期的指定时间部分的值,语法如下: DatePart(interval,date[,firstdayofweek[,firstweekofyear]]) 其中参数interval是必需的,字符串表达式,是要返回的时间间隔,设定值如表格所示。 第26行代码计算所输入的日期距当天的天数。DateDiff函数返回两个指定日期间的时间间隔数目,语法如下: DateDiff(interval,date1,date2[,firstdayofweek[,firstweekofyear]]) 其中参数interval是必需的,字符串表达式,表示用来计算date1和date2的时间差的时间间隔,设定值如以上表格所示。 参数date1和date2是必需的,计算中要用到的两个日期。 因为如果输入的日期是当前日期以前的日期,DateDiff函数会返回负值,所以使用Abs函数返回绝对值将其转换为正值。 第27行代码计算所输入的日期距当天的天数,DateAdd返回加上了一段时间间隔的一个日期,语法如下: DateAdd(interval,number,date) 参数interval是必需的,字符串表达式,是所要加上去的时间间隔,设定值如以上表格所示。 参数number是必需的,是要加上的时间间隔的数目。其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。 参数date是必需的,需要加上时间间隔的字符串表达式。运行DatFunctions过程,在显示的对话框中输入一个日期,结果。
|
|