| 
    
     |  | ▼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... なので、
 そこを修正してください。
 
 |  |