こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

マクロ教えてください(繰り返しの方法)

マクロ、VBAは超初心者です。

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
Sheets("optimizer").Select
Range("C8").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("D8").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

上のように同じことを何回も繰り返すのですが、2行目の Range("C8").SelectがC9, C10, C11・・・・、また下から3行目の
Range("D8").SelectがD9, D10, D11・・・と貼り付けていくところだけを変えていきたいのです。
今は長いプロシージャを書いているのですが、簡単でする方法があればご教授ください。
宜しくお願いいたします。

投稿日時 - 2005-11-11 14:30:22

QNo.1772286

すぐに回答ほしいです

質問者が選んだベストアンサー

失礼しました。

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 が必要です」は、コピー時に落ちたのかもしれません。

投稿日時 - 2005-11-11 17:03:51

お礼

できました!!!ありがとうございます。
今まで長いプロシージャで書いていたので大変でした。もっと早く聞けばよかった。。。
(^_~)

投稿日時 - 2005-11-11 17:29:06

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

上のコードで
--------------------------
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まで同じことを繰り返します。

投稿日時 - 2005-11-11 15:43:13

補足

ありがとうございます。貼り付けてやってみましたが、「End Sub が必要です」と出て、Sub kurikaesi()の前に挿入しました。すると今度は「Range メソッドが失敗しました。Globalオブジェクト」とメッセージが出てデバックを押すと「Range(Cells(r, c)).Select 'C列の指定した行」の部分にハイライトがかかりました。
やり方に間違いがあったのでしょうか?宜しくお願いいたします。

投稿日時 - 2005-11-11 16:39:29

あなたにオススメの質問