excel - 日期(现在)显示 1900 年 1 月?
问题描述
无论出于何种原因,每次我尝试在 VBA 中使用 Day(Now) 函数时,它都会一直显示“1/9/1900”。Date 函数显示正确,所以我不确定这里的问题是什么。
Sub Test()
Dim datDay As Date
datDay = Day(Now)
MsgBox datDay
End Sub
解决方案
这Day
将是一个介于 1 和 31 之间的整数,具体取决于DateTime.Now
函数返回的日期的“日”部分。
日期的存储方式,它们本质上是Double
值,整数部分是天数,小数部分是一天中的时间。
Debug.Print Format(CDate(0), "yyyy-mm-dd")
输出:1899-12-30
我们是 6 月 10 日,因此日期值10
对应于 1900 年 1 月 9 日。
您希望将 、 和 函数返回的值存储Day
到Month
整数Year
变量中Long
;不是Date
。
Dim datDay As Long
datDay = DateTime.Day(DateTime.Date) ' datDay is 10 because DateTime.Date is 2019-06-10.
注意:虽然不合格Day
的 , Date
, Month
, 和Year
(以及其他)函数工作得很好,但最好用它们在 ( VBA.DateTime
) 中声明的模块来限定它们,以避免潜在的混淆歧义,例如Date
,两者都是属性的名称DateTime
模块,也是一种数据类型(Dim foo As Date
),两者的含义截然不同。
推荐阅读
- go - Go build 失败:使用 go mod 文件运行“go build”时“下载不一致的图块”
- reactjs - 使用 GraphQL 反应无限滚动
- r - 使用 r 将布尔列组合成 1
- ios - 如何在 UIImagePickerController iOS 13 上更改导航栏背景颜色
- python - 如何从具有稀疏类型字段的 pandas 数据帧制作 XGBoost DMatrix[uint8, 0]
- javascript - 在function.php文件中使用php中的javascript代码
- scala - 如何创建共享 JDBC 连接以在执行程序上使用?
- c - 将数据连续写入文件的 C 最快方法
- wordpress - 未在 G-mail 中收到带有更改标题信息的 WordPress 通知
- vba - Word VBA:获取当前显示屏幕上的表格