繁体   English   中英

在VBA宏中使用日期变量?

[英]Using a date variable in VBA macro?

我正在尝试在宏中使用日期变量,在这里我有一个日期作为输入,并且我想为其计算日期。 这是一段代码:

Dim ntf as Date


'#An example of ntf is "12/10/2006  15:17:09" (properly formatted as a date)   
Sheets("myshhet").Select
ntf = Cells(2, 4)
Cells(6, 6).FormulaR1C1 = "=WEEKDAY(" & ntf & ")"

但这给我错误

运行时错误'1004'

在出现公式的行中)。

相反,如果我使用:

Dim ntf as Long

它可以工作,但是给出错误的结果。

我究竟做错了什么?

要使用日期,请将日期字符串放在引号中。

Dim ntf As Date


'# An example of ntf is ntf = 12/10/2006  15:17:09 (properly formatted as a date

ntf = Sheets("sheet5").Cells(2, 4).Value
Sheets("sheet5").Cells(6, 6).Formula = "=WEEKDAY(""" & ntf & """)"

或者对于Long,您需要使用Integer部分,而不要让vba将数字四舍五入。 日期时间是十进制。 因此,只要您的时间大于中午,它将四舍五入到第二天。 您需要强迫它不要四舍五入。

Dim ntf As Long


'# An example of ntf is ntf = 12/10/2006  15:17:09 (properly formatted as a date

ntf = Int(Sheets("sheet5").Cells(2, 4).Value2)
Sheets("sheet5").Cells(6, 6).Formula = "=WEEKDAY(" & ntf & ")"

或者避免所有这些,而改为使用double:

Dim ntf As Double


'# An example of ntf is ntf = 12/10/2006  15:17:09 (properly formatted as a date

ntf = Sheets("sheet5").Cells(2, 4).Value2
Sheets("sheet5").Cells(6, 6).Formula = "=WEEKDAY(" & ntf & ")"

问题是,在“错误结果”下,您可能表示它给出1而不是2或以此类推。

这是因为默认情况下,Excel中的第一天是星期日。

如果要在星期一的第一天,则将公式更改为以下内容:

Cells(6, 6).FormulaR1C1 = "=WEEKDAY(" & ntf & ",2)"

这些是返回类型:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM