Excel 为什么午夜被添加到我的数组而不是日期?
我将日期数组声明为:Excel 为什么午夜被添加到我的数组而不是日期?,excel,vba,Excel,Vba,我将日期数组声明为: Dim date_array() as Date 它的目标是存储在一个范围内找到的日期 Dim date_range As String 我将其声明为字符串,因为我有一个用户指定日期范围的输入表单(例如A1:A5) 然后计算该范围内的单元格数量,并指定日期数组的大小 ReDim date_array(Range(date_range).Cells.count) 到目前为止还不错。然后我循环遍历date_数组的每个元素,并从范围中添加日期 Dim i As Long i
Dim date_array() as Date
它的目标是存储在一个范围内找到的日期
Dim date_range As String
我将其声明为字符串,因为我有一个用户指定日期范围的输入表单(例如A1:A5)
然后计算该范围内的单元格数量,并指定日期数组的大小
ReDim date_array(Range(date_range).Cells.count)
到目前为止还不错。然后我循环遍历date_数组的每个元素,并从范围中添加日期
Dim i As Long
i = 0
For Each r In ThisWorkbook.Worksheets("Name").Range(date_range)
date_array(i) = r.Value
i + i + 1
Next r
然而,当我在这个循环中执行MsgBox(date_array(I))时,我得到的值是12:00:00am,而不是我想要的日期(例如2019年2月2日),这告诉我在翻译过程中有些东西丢失了
如果我使用MsgBox(r.Value),我会得到正确的结果。。。所以我给数组分配日期的方式似乎有点错误
以前有人遇到过这样的问题吗?我怎样才能修好它
更大的目标是使用日期+命名约定作为验证在两个文件之间映射数据,因此我需要数组以日期格式存储正确的日期,以便以后可以将其与不同的单元格值进行比较
谢谢,尝试:
MsgBox格式(日期数组(i),“mm/dd/yyyy”)
您能展示一些日期范围内数据的示例(可能是屏幕截图)吗?ReDim date\u数组(范围(日期范围).Cells.count)
从0
重拨到计数,这可能不是您想要的(我假设您想要1
,否则数组将有一个空元素)。尝试将date\u数组设置为aDouble
并使用date\u数组(I)=r.Value2
Excel将日期存储为双精度,并以特定方式进行格式化。但它们不是日期的双精度。通过将日期存储为日期,假定该格式,但从非默认格式的其他格式转换时可能会出错。