| 
    
     |  | はじめまして。 
 今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
 と書きましたら、「インデックスが有効範囲にありません」と出てしまいました。
 何故なのでしょうか?
 
 教えてください!
 
 |  |