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 だけでなく MonthName(Month(arrDateTime(intArrayIndex))) を使用する必要がありました。しかし、他の月の情報は、どれが今も謎であるかを示していました. したがって、上記の問題はほとんど解決されましたが、DateAdd() 部分が正しく機能していません。

また、elseif ステートメントを 1 つの 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 に答える