プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

   K   L   M
――――――――――――
コピー範囲 A2  J34
行数    35
コピー回数 5

L1にA2、M1にJ34、L2に35、L3に5とあり、このセルの数値を基に、
A2~J34(L1M1の値)範囲をコピーして
A35にペースト (35行下=L2の値)
A70にペースト (35行下=L2の値)
A105にペースト (35行下=L2の値)
A140にペースト (35行下=L2の値)
A175にペースト (35行下=L2の値)
と、5回(L3の値)コピーを繰り返すVBAを教えて下さい。
L1、M1、L2、L3の数値は都度変更しながら利用します。
よろしくお願いします。

A 回答 (2件)

No.1です。



>すべてのシートに同じ処理を繰り返すにはどうするのでしょう?

各Sheetの L1~L3・M1 が範囲・行数・回数となっているのですね?

わざわざ各シートを選択する必要はないと思います。
↓のコードにしてみてください。(標準モジュールです)

Sub Sample2()
Dim myTL As Range, myBR 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)
Do Until cnt = .Range("L3")
cnt = cnt + 1
myRng.Copy .Cells(.Range("L2") * cnt, "A")
Loop
End With
cnt = 0
Next k
Application.ScreenUpdating = True
MsgBox "完了"
End Sub

これではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございました。

お礼日時:2017/12/22 17:07

こんばんは!



一例です。

Sub Sample1()
Dim myTL As Range, myBR As Range, myRng As Range
Dim cnt As Long

Set myTL = Range(Range("L1"))
Set myBR = Range(Range("M1"))
Set myRng = Range(myTL, myBR)
Do Until cnt = Range("L3")
cnt = cnt + 1
myRng.Copy Cells(Range("L2") * cnt, "A")
Loop
MsgBox "完了"
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

早々にありがとうございました。
もう少しお願いできますか…。
sheetが30ほどあり、すべてのシートに同じ処理を繰り返すにはどうするのでしょう?
「最初のシート選択→シート移動」は下記だと思うのですが
各シート毎にvbaを実行させ、最後のシートで処理終了 が分かりません。

Sheets("最初のシート").Select
  (vba実行)
ActiveSheet.Next.Activate
  (vba実行)
 |
 |
最後のシートで終了

お礼日時:2017/12/22 07:08

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

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


このQ&Aを見た人がよく見るQ&A