|
はじめまして。
今EXCELで8行目から299行目まで、
すべて他のシートを参照して計算して反映する、
というVBAを組もうとしているのですが、
全部の行に対して、
Dim ws1 As Worksheet, ws2 As Worksheet, Rmax As Long,
Set ws1 = ThisWorkbook.Worksheets("Sheet1")
Set ws2 = ThisWorkbook.Worksheets("Sheet2")
Rmax = ws2.Range("D65536").End(xlUp).Row
ws1.Range("I8").Value = Application.WorksheetFunction.SumIf _
(ws2.Range("D1:D" & Rmax), ws1.Range("F8").Value, ws2.Range("G1:G" & Rmax))
と置いていたら重過ぎて強制終了が掛かってしまいました。
何回立ち上げても強制終了が掛かりましたので、
重すぎるのだと思ったのですが。
これを「Sheet1のF列目が空になったら検索・反映をやめる」
といったようなものにスッキリ変換できないでしょうか?
"LOOP"というものでできますか?
しかし、
Dim ws1 As Worksheet, ws2 As Worksheet, Rmax As Long, i As Long
Set ws1 = ThisWorkbook.Worksheets("Sheet1")
Set ws2 = ThisWorkbook.Worksheets("Sheet2")
Rmax = ws2.Range("D65536").End(xlUp).Row
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
MyStr = Range("F" & i)
If MyStr <> "" Then
ws1.Range("I8").Value = Application.WorksheetFunction.SumIf _
(ws2.Range("D1:D" & Rmax), ws1.Range("F8").Value, ws2.Range("G1:G" & Rmax))
End If
Next i
と書きましたら、「インデックスが有効範囲にありません」と出てしまいました。
何故なのでしょうか?
教えてください!
|
|