VBA中的日期转换问题 急!!!
发布网友
发布时间:2022-05-06 00:59
我来回答
共1个回答
热心网友
时间:2022-06-28 10:24
按照你的意思,你返回的值应该是一个String型,而不是日期型,把类型修改后可以运行,另外我觉的你的算法有些不太安全,最好使用日期函数进行运算。
Function date1(a As Integer, b As Integer, c As Integer) As String
If b >= 1 And b < 4 Then date1 = CStr(a - 1) + "-" + CStr(9) + "-" + CStr(30)
If b >= 4 And b < 6 Then date1 = CStr(a - 1) + "-" + CStr(12) + "-" + CStr(31)
If b >= 6 And b < 9 Then date1 = CStr(a) + "-" + CStr(3) + "-" + CStr(31)
If b >= 9 And b < 12 Then date1 = CStr(a) + "-" + CStr(6) + "-" + CStr(30)
If b = 12 Then date1 = CStr(a) + "-" + CStr(9) + "-" + CStr(30)
End Function
vba自带的日期函数:
Date 系统当前的日期
DateValue(字符串) 字符串转换为日期
DateSerial(年,月,日) 指定的年月日转换为日期
DateAdd("x",时间间隔,"日期") 某一日期加上一段时间
DateDiff("x","日期","日期") 两日期间相差一段时间
DatePart("x", "日期") 返回日期的部分
Application.Days360("日期开始", "日期结束") 两日期间的天数(按每月30天计)
DateDiff("d", "日期开始", "日期结束") 两日期间的天数(按实际天数计)
x为:
yyyy 年
q 季
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 时
n 分钟
s 秒
Year("日期") 返回日期的年份
Month("日期") 返回日期的月份
Day("日期") 返回日期的某日
Hour("日期") 返回日期的某时
Minute("日期") 返回日期的某分
Second("日期") 返回日期的某秒
Time 系统当前的时间
Timer 午夜到现在经过的秒数
TimeValue(字符串) 字符串转换为时间
TimeSerial(时,分,秒) 指定的时分秒转换为时间
Now 系统当前的日期和时间
Weekday("日期") 返回日期的星期几
WeekdayName(n) 数字转化成星期几(n为1~7)
MonthName(n) 数字转化成月份(n为1~12)
请参考