Excel VBA質問箱 IV

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

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


2704 / 13645 ツリー ←次へ | 前へ→

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

【66492】シート枚数だけコピーしたいのですが
質問  Gaba334  - 10/9/6(月) 19:00 -

引用なし
パスワード
   先頭シートのD5:D20を、(シート枚数-2枚)文の列だけ横の列(E,F,G・・・)
にコピー追加したいのです。
(あと、E5,F5,G5をシート名にしたいのですが)
しかし、うまく動きません。
どこがまずいのでしょうか?

sub aaa()
  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

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

【66496】Re:シート枚数だけコピーしたいのですが
お礼  Gaba334  - 10/9/6(月) 19:58 -

引用なし
パスワード
   ▼kanabun さん:

ありがとうございます。
プロが書くとこんなにすっきりするんですね。
参考になりました。
しかし私が下手すぎますね・・・。
がんばって鍛錬を積みます。

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