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

シート1のA3:A50までを シート1のE3:E50にコピーする為に

Sub 数値の移動()
Range("A3", "A50").Copy
Range("E3", "E50").PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub

上記のマクロを組んでみました。当然出来ましたが、これをシート1の
E3:E50からN3:N50までの範囲で、上書きせずにコピーする為のマクロは
どの様に組めば良いのでしょうか?
1回目はE3:E50、2回目はF3:F50、3回目はG3:G50…みたいな感じです。

A3:A50は毎回違う数値が、他のシートから入ってきます。

何方かご教授お願いします。

A 回答 (2件)

こんばんは!



一気にE列~N列にコピー&ペーストするのではなく
マクロを実行するたびにコピーする列を1列右にずらしたい!というコトでしょうかね?

もしそうであれば、どこか使っていないセルに「カウンタ」のようなものを設けるのが良いと思います。
一例です。

仮にZ1セルをカウンタ的役割として使用する場合です。

Sub Sample1()
Dim cnt As Long, myRng As Range
Set myRng = Range("A3:A50")
With Range("Z1")
If .Value < 10 Then
.Value = .Value + 1
Else
.Value = 1
End If
myRng.Copy
Cells(3, Range("Z1") + 4).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
End Sub

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

早々の御回答有難う御座います。
無事出来ました。
Ifを使えばできるかも…と思っても
そこから先に進めなかったので、
大変に感謝しております。

お礼日時:2017/10/07 01:30

こんばんは。



質問では読みきれませんでしたが、私は、このような解釈をしました。

'毎回、その右にコピーする
Sub RepeatedCopy()
 Dim cl As Long '列番号
 Dim St As Variant 'スタート列
 St = 5 ''E列がスタート
 With ActiveSheet
  cl = .Cells(3, Columns.Count).End(xlToLeft).Column '3行目で比較
  If cl < St Then
   cl = St
  ElseIf cl < 14 Then
   cl = cl + 1
  Else
   MsgBox "N列まで埋まりました。", vbExclamation
   '' これ以上はコピーしません。
   Exit Sub
  End If
  .Cells(3, cl).Resize(48).Value = .Range("A3:A50").Value
 End With
End Sub
    • good
    • 0

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