”インデックスが有効範囲にありません”と言われます
はじめまして。
VBA初心者です。
次のプログラムを実行すると、
”インデックスが有効範囲にありません”と言われます。
見よう見まねで本を参考に式を書いてみました。
1.csv のシート名”1”→ 2.csvのシート名"2"→…→100.csvのシート名”100”と順にファイルを読込みませて、
1つのシートに上から、1.csvのシート”1”の結果、2.csvのシート名の”2”の結果、と順に100行まで書き込みたいと考えているのですが上記のエラーになってしまいました。
今のままだと1行目、2行目に1.csvの結果が表示されるだけです。
エラーの原因がわからなくなってしまいました…
すみませんが、よろしくお願いします。
以下、VBAです。
Option Explicit
Sub test()
Dim fileNames As Variant
Dim a(12) As Long
Dim lp As Integer
fileNames = Application.GetOpenFilename(MultiSelect:=True)
If IsArray(fileNames) = True Then
For lp = 1 To UBound(fileNames)
Workbooks.Open (fileNames(lp))
ThisWorkbook.Worksheets("Sheet1").Range("B2", "B" & lp).Value _
= ActiveWorkbook.Worksheets(CInt(lp)).Range("BF5").Value
ThisWorkbook.Worksheets("Sheet1").Range("C2", "C" & lp).Value _
= ActiveWorkbook.Worksheets(CInt(lp)).Range("BF6").Value
ThisWorkbook.Worksheets("Sheet1").Range("D2", "D" & lp).Value _
= ActiveWorkbook.Worksheets(CInt(lp)).Range("BF7").Value
ThisWorkbook.Worksheets("Sheet1").Range("E2", "E" & lp).Value _
= ActiveWorkbook.Worksheets(CInt(lp)).Range("BF8").Value
ThisWorkbook.Worksheets("Sheet1").Range("F2", "F" & lp).Value _
= ActiveWorkbook.Worksheets(CInt(lp)).Range("BF9").Value
ThisWorkbook.Worksheets("Sheet1").Range("G2", "G" & lp).Value _
= ActiveWorkbook.Worksheets(CInt(lp)).Range("BF10").Value
ThisWorkbook.Worksheets("Sheet1").Range("H2", "H" & lp).Value _
= ActiveWorkbook.Worksheets(CInt(lp)).Range("BF11").Value
ThisWorkbook.Worksheets("Sheet1").Range("I2", "I" & lp).Value _
= ActiveWorkbook.Worksheets(CInt(lp)).Range("BF12").Value
ThisWorkbook.Worksheets("Sheet1").Range("J2", "J" & lp).Value _
= ActiveWorkbook.Worksheets(CInt(lp)).Range("BF13").Value
ThisWorkbook.Worksheets("Sheet1").Range("K2", "K" & lp).Value _
= ActiveWorkbook.Worksheets(CInt(lp)).Range("BF14").Value
ThisWorkbook.Worksheets("Sheet1").Range("L2", "L" & lp).Value _
= ActiveWorkbook.Worksheets(CInt(lp)).Range("BF15").Value
ThisWorkbook.Worksheets("Sheet1").Range("M2", "M" & lp).Value _
= ActiveWorkbook.Worksheets(CInt(lp)).Range("BF16").Value
a(1) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF5").Value
a(2) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF6").Value
a(3) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF7").Value
a(4) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF8").Value
a(5) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF9").Value
a(6) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF10").Value
a(7) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF11").Value
a(8) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF12").Value
a(9) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF13").Value
a(10) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF14").Value
a(11) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF15").Value
a(12) = ActiveWorkbook.Worksheets(CInt(lp)).Range("BF16").Value
ThisWorkbook.Worksheets("Sheet1").Range("N2", "N" & lp).Value _
= (a(1) + a(2) + a(3) + a(4) + a(5) + a(6) + a(7) + a(8) + a(9) + a(10) + a(11) + a(12)) / 12
ThisWorkbook.Worksheets("Sheet1").Range("O2", "O" & lp).Value _
= WorksheetFunction.Max(a(1), a(2), a(3), a(4), a(5), a(6), a(7), a(8), a(9), a(10), a(11), a(12))
ActiveWorkbook.Close
a(1) = 0
a(2) = 0
a(3) = 0
a(4) = 0
a(5) = 0
a(6) = 0
a(7) = 0
a(8) = 0
a(9) = 0
a(10) = 0
a(11) = 0
a(12) = 0
Next
End If
End Sub
お礼
フォームのチェックボックスでしたので2番目の方でパーフェクトで解決しました。 非常に助かりました。ありがとうございます。またよろしくお願いします。