- ベストアンサー
マクロの繰り返し方法を教えてください
- 超初心者のため、マクロやVBAについて詳しく知りたいです。
- 現在、同じ処理を何回も繰り返す必要がありますが、手間がかかっています。
- 2行目の指定範囲を変える方法や、下から3行目の指定範囲を変える方法などを教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
失礼しました。 Range(Cells(r, c)).Select 'C列の指定した行 →Cells(r, c).Select 'C列の指定した行 に Range(Cells(r, c + 1)).Select 'D列(C列の隣)の指定した行 →Cells(r, c + 1).Select 'D列(C列の隣)の指定した行 に変更してみてください。 「End Sub が必要です」は、コピー時に落ちたのかもしれません。
その他の回答 (1)
- moon00
- ベストアンサー率44% (315/712)
上のコードで -------------------------- Sheets("optimizer").Select Range("C7").Select Selection.Copy Range("E6").Select ActiveSheet.Paste SolverOk SetCell:="$F$34", MaxMinVal:=1, ValueOf:="0", ByChange:="$F$28:$O$28" SolverSolve Userfinish:=True Range("F28:Q28").Select Selection.Copy Sheets("table").Select Range("D7").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False ----------------------------- この部分で 2行目の「C7」11行目の「D7」を それぞれ順番にC8,C9, C10, C11・・・・ D8,D9, D10, D11・・・と変化する、ということでしょうか。 ---------------------------------------------- Sub kurikaesi() Dim r As Integer Dim c As Integer c = 3 'C列 For r = 8 To 15 '繰り返す行番号を指定 Sheets("optimizer").Select Range(Cells(r, c)).Select 'C列の指定した行 Selection.Copy Range("E6").Select ActiveSheet.Paste SolverOk SetCell:="$F$34", MaxMinVal:=1, ValueOf:="0", ByChange:="$F$28:$O$28" SolverSolve Userfinish:=True Range("F28:Q28").Select Selection.Copy Sheets("table").Select Range(Cells(r, c + 1)).Select 'D列(C列の隣)の指定した行 Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Next End Sub --------------------------------------------- C8~C15、D8~D15まで同じことを繰り返します。
補足
ありがとうございます。貼り付けてやってみましたが、「End Sub が必要です」と出て、Sub kurikaesi()の前に挿入しました。すると今度は「Range メソッドが失敗しました。Globalオブジェクト」とメッセージが出てデバックを押すと「Range(Cells(r, c)).Select 'C列の指定した行」の部分にハイライトがかかりました。 やり方に間違いがあったのでしょうか?宜しくお願いいたします。
お礼
できました!!!ありがとうございます。 今まで長いプロシージャで書いていたので大変でした。もっと早く聞けばよかった。。。 (^_~)