配列に日付データを確保したい
ソースがエラーを起こしていて原因がわからず困っています。ご教授ください。
インデックスが有効範囲にありませんと出るのが、
kDate1 = Application.WorksheetFunction.Min(hDate1) です。
確保データシートの列行双方の項目名を拾い、該当するデータを進捗表で調べ該当を配列に入れるというもので(あとでループ処理追記)、配列にデータは日付です。
(文字数削減のためDimおかしいですが無視してください)
Sub ssDate()
Dim gRange As Range
Dim sDate, fDate As Date
Dim gKinou, gStep1, sStep1, sStep2 As String
Dim sKinou, sRecord, a, i, k, m, rr, rr2 As Integer
Dim kDate1~kDate6, hDate1()~ hDate6() As Variant
Worksheets("確保データ").Select
Cells(4, 5).Select 'テスト用
'冒頭処理
'Application.ScreenUpdating = False '画面描画停止
'全体設定
i = 9 '進捗表検索開始行
m = 7 '段階記載列
k = 0 '配列添
sKinou = 179'進捗表上機能名確定列
rr = 11 'K列 日付取得基準列
rr2 = 20 'T列日付取得基準列
'段階の設定
Set gRange = Selection
gKinou = Cells(gRange.Row, 3).Value
gStep1 = Cells(1, gRange.Column).Value '段階
Worksheets("進捗表").Select
sRecord = Cells(i, 7).End(xlDown).Row
'条件に該当するデータを配列で取得
For Each a In Range(Cells(i, m), Cells(sRecord, m))
'参照先設定
sStep1 = Cells(i, sKinou).Value
sStep2 = Cells(i, 7).Value
If gKinou = sStep1 And gStep1 = sStep2 Then
ReDim hDate1(k)
hDate1(k) = Cells(i, rr).Value '開始予定
hDate2(k) = Cells(i, rr + 1).Value '開始実績
hDate3(k) = Cells(i, rr + 2).Value '終了予定
hDate4(k) = Cells(i, rr + 3).Value '終了実績
If gStep1 = "見学" Or gStep1 = "会議" Then
hDate5(k) = Cells(i, rr2).Value '見学
hDate6(k) = Cells(i, rr2 + 1).Value '会議
End If
k = k + 1
End If
Next
MsgBox hDate1(0)
'最小最大判定
kDate1 = Application.WorksheetFunction.Min(hDate1) '開始予定 <<ここでエラー
kDate2 = Application.WorksheetFunction.Min(hDate2) '開始実績
kDate3 = Application.WorksheetFunction.Max(hDate3) '終了予定
kDate4 = Application.WorksheetFunction.Max(hDate4) '終了実績
If gStep1 = "見学" Or gStep1 = "会議" Then
kDate5 = Application.WorksheetFunction.Max(hDate5) '見学
kDate6 = Application.WorksheetFunction.Max(hDate6) '会議
End If
MsgBox "開始予定:" & kDate1 & vbCrLf & "開始実績:" & kDate2 & vbCrLf _
& "終了予定:" & kDate3 & vbCrLf & "終了実績:" & kDate4 & vbCrLf _
& "内容:" & gKinou & vbCrLf & "段階:" & gStep1
Exit Sub
End Sub
お礼
ご回答ありがとうございます。 無事動きました。おかげさまで次のステップへ進めました!