
按照你的意思,你返回的值应该是一个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", "日期") 返回日期的部分
ApplicationDays360("日期开始", "日期结束") 两日期间的天数(按每月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)
请参考
Public Sub 作业1()
Dim x As Integer
week = Val(InputBox("请输入x"))
If x = 0 Then
DebugPrint "星期日"
ElseIf x = 1 Then
DebugPrint "星期一"
ElseIf x = 2 Then
DebugPrint "星期二"
ElseIf x = 3 Then
DebugPrint "星期三"
ElseIf x = 4 Then
DebugPrint "星期四"
ElseIf x = 5 Then
DebugPrint "星期五"
ElseIf x = 6 Then
DebugPrint "星期六"
ElseIf x = -1 Then
DebugPrint "终止程序"
Else
DebugPrint "你的输入有误"
End If
End Sub
我的思路是这样,从7天前开始倒序往前数,找到周一就是你要的上周。
Sub test()Dim a As Date, i As Integer
a = Date
For i = 7 To 13
If WorksheetFunctionWeekday(a - i, 2) = 1 Then
MsgBox "上周一是: " & a - i
Exit Sub
End If
Next i
End Sub
date为当日的日期,通常now为日期时间格式,而DATE 只去日期格式。
=Format("3/31/09", "mm-dd-yyyy")
关于此例中用到的Format函数的相关知识:
Format函数
根据有效的命名表达式来对指定的表达式进行格式化。
Format(expression[, format[, firstdayofweek[, firstweekofyear]]])
Format 函数具有下面几个参数:
expression 必要参数。任何有效的表达式。
format 可选参数。有效的命名表达式或用户自定义格式表达式。
firstdayofweek 可选参数。常数,表示一星期的第一天。
firstweekofyear 可选参数。常数,表示一年的第一周。
扩展资料:
Month 代表每年中月份的数字。如果所输入的月份大于 12,将从指定年份的一月份开始往上加算。例如:DATE(2008,14,2) 返回代表 2009 年 2 月 2 日的序列号。
如果所输入的月份小于 0,将从指定年份前一年的十二月份开始往下减去相应的月份数。例如:DATE(2008,-3,2) 返回代表 2007年 9 月 2 日的序列号。
Day 代表在该月份中第几天的数字。如果 day 大于该月份的最大天数,则将从指定月份的第一天开始往上累加。例如,DATE(2008,1,35) 返回代表 2008 年 2 月 4 日的序列号。
参考资料来源:百度百科-date函数
以上就是关于VBA日期转化问题全部的内容,包括:VBA日期转化问题、VBA编程题: 1.用整数0—6依次表示星期日,星期一,。。。。。星期六,编程实现下列功能、VBA可以设置不管是在哪天都是抽取上周的数据的编码吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)