0

所以我正在尝试使用日期数组,但遇到了很多麻烦。我已经尝试了我能想到的所有东西,但无法让它发挥作用。

本质上,问题是我无法获得插入到要接受的数组中的日期(特别是月份)。所有信息都存储在适当的变量中,但没有分配给数组索引。

'grabs the date
If k = 0 Then
    intDay = Cells(intRowNum + 2, 2).Value
    arrDateTime(intArrayIndex) = DateValue(strMonth & " " & intDay & ", " & intYear)
ElseIf j = 0 Then
    arrDateTime(intArrayIndex) = DateAdd("d", 1, arrDateTime(intArrayIndex - 1))
ElseIf j = 1 Then
    arrDateTime(intArrayIndex) = arrDateTime(intArrayIndex - 1)
End If
strTemp = "" 'resets temporary variable


'grabs the time
If j = 0 Then
    arrDateTime(intArrayIndex) = arrDateTime(intArrayIndex) + TimeValue(Cells(intRowNum + 3, 1).Value)
Else
    arrDateTime(intArrayIndex) = arrDateTime(intArrayIndex) + TimeValue(Cells(intRowNum + intMaxRows + 3, 1).Value)
End If

我究竟做错了什么?将日期/时间分配给日期数组的正确方法是什么?

更新 1

结果发现信息被错误地检索,不得不使用 MonthName(Month(arrDateTime(intArrayIndex))) 而不仅仅是 MonthName。然而,另一个月的信息显示,这曾经是并且仍然是一个谜。所以上面的大部分问题现在已经解决了,但是 DateAdd() 部分不能正常工作。

另请注意,我已将 elseif 语句简化为一个 else 语句

arrDateTime(intArrayIndex) = DateAdd("d", j-1, arrDateTime(intArrayIndex - 1))

尽管 DateAdd 部分的代码都不能正常工作。我已经测试了 arrDateTime(2) = arrDateTime(1) 并且工作正常,所以显然数组索引有问题,因为每当我使用它时,它都会返回一个很远的日期。

4

2 回答 2

0

如果您的月份值采用名称的形式(“May”),请改用月份编号(例如,“5”)。您可以使用 MONTH("1"&strMonth) 来执行此操作。

于 2013-06-06T21:23:19.933 回答
0

我不知道您的格式strMonth,但如果可能,请改用DateSerial,例如:

arrDateTime(intArrayIndex) = DateSerial(intYear, strMonth, intDay)
于 2013-06-06T21:16:57.260 回答