- 締切済み
配列に日付データを確保したい
ソースがエラーを起こしていて原因がわからず困っています。ご教授ください。 インデックスが有効範囲にありませんと出るのが、 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
- みんなの回答 (3)
- 専門家の回答