|
▼Gaba334 さん:
おじゃまします
>先頭シートのD5:D20を、(シート枚数-2枚)文の列だけ横の列(E,F,G・・・)
>にコピー追加したいのです。
>(あと、E5,F5,G5をシート名にしたいのですが)
>どこがまずいのでしょうか?
まず、モジュールの先頭に【Option Explicit】をお忘れなく!
とりあえず 意味不明な "" をとると、こうなります
Sub aaa2()
Dim i As Long
For i = 3 To Worksheets.Count
Sheets(1).Range("D5:D20").Copy _
Sheets(1).Range(Cells(5, i + 1), Cells(20, i + 1))
Sheets(1).Cells(5, (i + 1)) = Sheets(i).Name
Next
End Sub
ただ、「Cells」のまえにシートが省略されているので
このままでは、まずいです。
Sub aaa3()
Dim i As Long
For i = 3 To Worksheets.Count
Sheets(1).Range("D5:D20").Copy _
Sheets(1).Range(Sheets(1).Cells(5, i + 1), _
Sheets(1).Cells(20, i + 1))
Sheets(1).Cells(5, (i + 1)) = Sheets(i).Name
Next
End Sub
↑たくさん Sheets(1) が出てくるので、 With句を使って
まとめると ↓です
Sub aaa4()
Dim i As Long
With Worksheets(1)
For i = 3 To Worksheets.Count
.Range("D5:D20").Copy .Cells(5, i + 1)
.Cells(4, i + 1) = Worksheets(i).Name
Next
End With
End Sub
コピー元範囲を 変数r に入れておくと、こうです
Sub aaa5()
Dim i As Long
Dim r As Range
Set r = Worksheets(1).Range("D5:D20")
For i = 3 To Worksheets.Count
r.Copy r.Offset(, i - 3)
r(0, i - 2).Value = Worksheets(i).Name
Next
End Sub
★あとは、
コピー先の列が
> 横の列(E,F,G・・・)
にはなっていないので、D,E,F... なので、
そこを修正してください。
|
|