【问题标题】:VBA Weekday function returns different value from Excel Weekday functionVBA Weekday 函数返回与 Excel Weekday 函数不同的值
【发布时间】:2014-06-05 13:26:57
【问题描述】:

我完全被难住了 -

在 vba 中使用 Weekday() 函数会返回不正确的工作日,而在 Excel 的工作表中使用它会返回正确的工作日。指定或省略周开始参数似乎也没有任何区别。

系统时钟(我假设它用于“今天”)没有改变。事实上,我什至无权更改它。

这是我在 VBA 中的即时窗口返回的内容:

Print Weekdayname(Weekday(today),False)
Saturday

Print Weekday(today)
 7 

Print Application.WorksheetFunction.Weekday(today)
 7 

Print Weekday(6/5/2014)
 7 

Print Weekday(6/13/2014)
 7 

另一方面,Excel 工作表为这些公式返回 5:

=WEEKDAY(TODAY())
=WEEKDAY(DATEVALUE("06/5/2014"))

任何帮助将不胜感激!

编辑:

我在 Windows 7 上使用 Excel 2010。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    问题是“今天”不会返回任何东西。使用“现在”:

    Weekdayname(Weekday(Now),False)
    

    此外,对于您输入日期的最后一个函数,您需要将其放在引号中:

    Weekday("6/5/2014")
    

    【讨论】:

    • 新手错误:/非常感谢。尽管它返回 7,但我仍然感到惊讶 - VBA 经常用零长度字符串做不同的事情,而且它默认为 7(星期六)而没有在方法的帮助文本中注明输出的事实对我来说很奇怪。
    • 等效的 VBA/Excel 函数是 =NOW()/Now 和 =TODAY() /Date。所以Weekday(Date) 也可以。 Today 不是 VBA 中的函数。
    【解决方案2】:

    您尝试显示日期序列号的工作日,该日期序列号是 6/5/2014 计算的结果(即 6 除以 5,然后除以 2014)。

    如果您想使用 Date 类型的文字值,请在您的即时窗口中尝试:

    ?Weekday(#6/5/2014#)
    

    请注意这里和以下的区别:

    ?Weekday(6/5/2014)
    

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多