プロが教えるわが家の防犯対策術!

こんにちは。A1からA50までに値が入っており、それをA51からA100、A100からA150、、、と繰り返し100回くらいコピーしたいのですが、簡単な方法はありますか?
  Range("A1:A50").Select
Selection.Copy
Range("A1").Select
Selection.Insert Shift:=xlDown
でなんとなくできそうなのですが、100回繰り返す、という指定の仕方がわかりません。よろしくお願いします!

A 回答 (3件)

既に回答は出ており、それなりに難しいですが、ふと思いついて・・


たとえばA2:C4
A列   B列   C列
a1x
b2y
c3z
これをC4で+ハンドルをだし、「CTRLを押しながら」下へ引っ張ると
繰り返しコピーして
a1x
b2y
c3z
a1x
b2y
c3z
a1x
b2y
c3z
a1x
b2y
・・・・
になりました。
VBAでは、たった2行
Sub test01()
Range("A2:C4").Select
Selection.AutoFill Destination:=Range("A2:C19"), Type:=xlFillCopy
End Sub
です。
これをA2:C4----->A1:A50
A2:C19------->A1:A5000
にして実行してみてください。うまくいくのではないかと思います。
エクセルの特別な機能をVBAに置き換えたものです。
    • good
    • 0

こんにちは。



ご質問を読んで、コードでなぜ挿入を使っているのか分りませんが、下に何かあると予想すると、こういうことかな?挿入を使うというのは、ちょっとややこしいです。上書きがよいなら、単に、AutoFillメソッドだけでよさそうです。

'----------------------------------
Sub TestRefrainCopy()
Dim r As Range
Const TIMES As Integer = 100 '回数
If TIMES < 1 Then Exit Sub
Set r = Range("A1:A50")
 r.Offset(r.Count).Resize(r.Rows.Count * TIMES).Insert Shift:=xlDown
 r.AutoFill r.Resize(r.Rows.Count * (TIMES + 1)), Type:=xlFillCopy
Set r = Nothing
End Sub

'----------------------------------
    • good
    • 0

Select/Activateは極力避けましょう。

トラブルのもとです。

Sub test()
Dim i As Long, x As Integer
Application.ScreenUpdating = False
Range("a1:a50").Copy
For i = 1 To 100
Cells(x + 51, 1).PasteSpecial
x = x + 50
Next
With Application
.CutCopyMode = False
.ScreenUpdating = True
End With
End Sub
    • good
    • 0

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