Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


30877 / 76738 ←次へ | 前へ→

【51121】LOOPについて
質問  すず  - 07/8/29(水) 5:47 -

引用なし
パスワード
   はじめまして。

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

教えてください!

0 hits

【51121】LOOPについて すず 07/8/29(水) 5:47 質問
【51125】Re:LOOPについて Loopくん 07/8/29(水) 9:38 発言
【51145】Re:LOOPについて すず 07/8/29(水) 22:51 回答
【51149】Re:LOOPについて Loopくん 07/8/30(木) 8:20 発言
【51171】Re:LOOPについて すず 07/8/31(金) 22:05 お礼
【51134】Re:LOOPについて ハチ 07/8/29(水) 13:58 発言

30877 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free