我想写一个VBA,检查WEEKNUM或ISOWEEKNUM是否等于这个值,然后运行宏的其余部分。我曾尝试过这样做,但因为将TODAY用作arg而出现错误。
发布于 2016-07-10 00:19:28
下面是在VBA中同时使用WEEKNUM()和TODAY()的一种方法:
Sub dural()
If Evaluate("=weeknum(today())") = 28 Then
MsgBox 28
Else
MsgBox "not 28"
End If
End Sub发布于 2016-07-10 02:58:50
使用WorksheetFunction object或Excel Application object将本机函数调用到VBA中。
debug.print WorksheetFunction.WeekNum(Date)
debug.print application.WeekNum(Date)
debug.print WorksheetFunction.IsoWeekNum(Date)
debug.print application.IsoWeekNum(Date)
if application.WeekNum(Date) = 28 then
'it is currently 28
end if在VBA中,Date函数取代了TODAY()函数。
发布于 2016-07-09 21:30:29
WEEKNUM函数将包含1月1日的一周视为一年的第一周。然而,有一个欧洲标准将第一周定义为新年中大部分天数(四天或更长时间)的一周。这意味着,对于1月第一周不超过3天的年份,WEEKNUM函数将返回根据欧洲标准不正确的周数字。
Sub test()
Dim wn As Integer
wn = Format(Date, "ww")
Debug.Print wn
End SubISO Weeknum是。
ISO周数
一年中第一周的ISO标准:-一周从星期一开始;因此星期一是任何一周的第一天-一年中的第一周必须至少包含该年的4天
如果是周一、周二、周三或周四,则1月1日在第1周内如果是周一、周二、周三或周四,则1月4日始终在任何一年的第1周内
要测试此功能,可以添加另一个小例程。Dim test_today_weeknum() Dim dt As date Dim wno As Integer‘在此示例中,名为LDate的变量现在将包含当前系统日期。dt = Date Debug.Print dt wno = ISOweeknum(dt) Debug.Print wno End Sub
对于今天,即2016年9月7日,第一个函数提供weeknum 28,而ISO weeknum函数提供27
对于2015年9月7日,上述两个例程都将给出weeknum 28
要在Excel的单元格公式中获取当前日期(不包括时间部分),请使用:
=TODAY()然而,在VBA编程环境中,该函数将是DATE()。Now包含当前日期和时间,而Date和Time是日期和time.It的单独命令,它们都取决于您需要哪些信息。
https://stackoverflow.com/questions/38282079
复制相似问题