dポイントプレゼントキャンペーン実施中!

お世話になります。

   K   L   M
――――――――――――
コピー範囲 A2  J34
コピー開始 B40
行間    40
コピー回数 5

L1にA2、M1にJ34、L2にB40、L3に40、L4に5とあり、このセルの数値を基に
A2~J34(L1M1の値)をコピーして
B40(L2の値)にペースト
B80にペースト(B40の40行下=L3の値)
B120にペースト(さらに40行下=L3の値)
B160にペースト(さらに40行下=L3の値)
B2000にペースト(さらに40行下=L3の値)
と5回(L4の値)ペーストし
これを全シート繰り返すVBAを教えて下さい。

https://oshiete.goo.ne.jp/mypage/history/question/
にて教えてもらったのですが、「コピー開始」項目が抜けていました。
よろしくお願いします。

質問者からの補足コメント

  •   補足日時:2017/12/24 14:58
  • gooから「ベストアンサーを選びましょう」とコメントが届きました。
    前回の続ということでベストアンサーなしで閉じさせていただきます

      補足日時:2017/12/28 23:35

A 回答 (2件)

こんばんは。



補足URL先のコードを修正して作成してみました。

Sub Sample2()
Dim myTL As Range, myBR As Range, myRng As Range
Dim k As Long, cnt As Long
Dim dstRng As Range

cnt = 0
Application.ScreenUpdating = False
For k = 1 To Worksheets.Count
With Worksheets(k)
Set myTL = .Range(.Range("L1"))
Set myBR = .Range(.Range("M1"))
Set myRng = .Range(myTL, myBR)
Set dstRng = .Range(.Range("L2"))
Do Until cnt = .Range("L4")
myRng.Copy dstRng.Offset(.Range("L3") * cnt)
cnt = cnt + 1
Loop
End With
cnt = 0
Next k
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
    • good
    • 0
この回答へのお礼

mike32さん
ありがとうございました。
コード利用させていただきます。

お礼日時:2017/12/25 10:46

こんばんは!



前回回答してものです。
すでに的確な回答は出ていますが、
とりあえずコードを考えたので記載しておきます。

Sub Sample3()
Dim myTL As Range, myBR As Range
Dim myStart As Range, myRng As Range
Dim k As Long, cnt As Long
Application.ScreenUpdating = False
For k = 1 To Worksheets.Count
With Worksheets(k)
Set myTL = .Range(.Range("L1"))
Set myBR = .Range(.Range("M1"))
Set myRng = .Range(myTL, myBR)
Set myStart = .Range(.Range("L2"))
Do Until cnt = .Range("L4")
cnt = cnt + 1
myRng.Copy
myStart.Offset((cnt - 1) * .Range("L3")).PasteSpecial Paste:=xlPasteValues
Loop
cnt = 0
End With
Next k
Application.ScreenUpdating = True
MsgBox "完了"
End Sub

※ 今回は値のみの貼り付けとしました。
※ エラー処理はしていません。m(_ _)m
    • good
    • 0
この回答へのお礼

tom04さん
いつもありがとうございます。
式もコピーしたいので、mike32さんのコードを利用させていただきます。

お礼日時:2017/12/25 10:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています