在Date数组中分配和操作值

时间:2013-06-06 21:01:14

标签: vba excel-vba excel

所以我试图使用一个日期数组但是遇到了很多麻烦。我已经尝试了我能想到的一切,但无法让它发挥作用。

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

'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语句简化为一个其他语句

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

对于DateAdd部分,这两个代码都没有正常工作。我已经测试了arrDateTime(2)= arrDateTime(1)并且运行正常,所以显然数组索引有问题,因为每当我使用它时它返回一个离开的日期。

2 个答案:

答案 0 :(得分:0)

我不知道strMonth的格式,但如果可能,请使用DateSerial代替:

arrDateTime(intArrayIndex) = DateSerial(intYear, strMonth, intDay)

答案 1 :(得分:0)

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