|
先日はありがとうございました。再度ご教授頂きたいのですが。
前回同様に常時開いているファイル(Sheet1)に記述されたマクロで他のファイルを開いた後、下記の動作をさせたいのですがうまくいきません。
ファイル1〜100のA列、B列には何れも30行までデータが埋まっているとします。
1. ファイル1のA1〜A10の平均値 → 常時開いているファイルのB1に出力
2. ファイル1のA21〜A30の平均値 → 常時開いているファイルのB2に出力
3. ファイル1のB1〜B10の平均値 → 常時開いているファイルのC1に出力
4. ファイル1のB21〜B30の平均値 → 常時開いているファイルのC2に出力
ファイル2以降についても、1.〜4.の要領で行う。但し出力先は、直前の出力した各セルの1つ下へ繋げて出力していきたいのです。
前回に習って、上記動作部を下記の通りに書換えて実行しましたが、矢印の行でエラーとなります。
どのようにしたらいいのかご教授頂ければ幸いです。
Sub Macro1()
Dim LastCell As Range, c As Range, Wb As Workbook, strFileName As String
Dim i As Long, Co As Long
With ThisWorkbook.Worksheets("Sheet1")
から
Set Wb = Workbooks.Open(strFileName & c.Value)
まではファイルを開く部分で前回と同様です。以下は
Wb.ActiveSheet.Range("C1").Activate
For X = 0 To 30 Step 20
Wb.ActiveCell.Value = _ ← この行が定義エラーとなる
Application.WorksheetFunction.Average(Wb.ActiveSheet.Range (Cells(1 + X, 1), Cells(1 + X + 9, 1)))
ActiveCell.Offset(1, 0).Activate
Next X
Wb.ActiveSheet.Range("D1").Activate
For X = 0 To 30 Step 20
Wb.ActiveCell.Value = _
Application.WorksheetFunction.Average(Wb.ActiveSheet.Range (Cells(1 + X, 2), Cells(1 + X + 9, 2)))
ActiveCell.Offset(1, 0).Activate
Next X
↓Co=1としている
. Range(Cells(Co, 2), Cells(Co + 1, 3))= _
Wb.ActiveSheet.Range(Cells(1, 3), Cells(2, 4))
Co = Co + 2
Wb.Close SaveChanges:=False
Set Wb = Nothing
End If
Next c
Application.ScreenUpdating = True
End With
Set LastCell = Nothing
End Sub
|
|