Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


15719 / 76738 ←次へ | 前へ→

【66494】Re:シート枚数だけコピーしたいのですが
発言  kanabun  - 10/9/6(月) 19:33 -

引用なし
パスワード
   ▼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... なので、
そこを修正してください。
0 hits

【66492】シート枚数だけコピーしたいのですが Gaba334 10/9/6(月) 19:00 質問
【66494】Re:シート枚数だけコピーしたいのですが kanabun 10/9/6(月) 19:33 発言
【66496】Re:シート枚数だけコピーしたいのですが Gaba334 10/9/6(月) 19:58 お礼

15719 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free