|
こんにちは。かみちゃん です。
>以下のは未完成で、各シートからコピーではなく、一覧表のRange("H1:HP1")が
>コピーされてしまい、各シートに対応ができていません。
気づいた点のみ。
If WS2.Name <> "" Then
は、何をしようとしていますか?
私は、
If WS2.Name <> "まとめ" Then
というヒントを差し上げたと思います。
> 一覧表のRange("H1:HP1")がコピーされてしまい
Range("H1:HP1").Select
というコードにしているからです。
これでは、アクティブシートのH1:HP1になります。
マクロ実行開始時のアクティブシートが「一覧表」であれば、そのような事象になります。
これを回避するためには、
Range("H1:HP1").Select
の前に、
WS2.Acivate
として、アクティブシートを変更するか、
Range("H1:HP1").Select
Selection.Copy
Sheets("一覧表").Select
Cells(n, "A").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
を
WS2.Range("H1:HP1").Copy
WS1.Cells(n, "A").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
とします。
なお、この部分は、
With WS2.Range("H1:HP1")
WS1.Cells(n, "A").Resize(, .Columns.Count).Value = .Value
End With
というように書き換えることもできます。
> 貼り付け先(一覧表)へ1行づつ下にずれて貼り付けることもまだ対応が
> できていません。
ここまでできたのですから、もう一歩です。
n = 2
という使い方ができているということですから、どのようにしたらいいかは、
もう少し自分で考えてみましょう。
自分で考えたコードが思うとおり動くようになったら、たぶんうれしいと思いますから。
|
|