|
▼かみちゃん さん:
ご返信ありがとうございました。
少しずつやりたいことに近づいてきているのですが、ひたすら同じページのみが
一覧表にコピーされています。
次のシートへ・・・と進む部分はどこになりますか?
理解に時間がかかってしまってすみません。
Sub 一覧表作成()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim n As Long
n = 2
Set WS1 = Worksheets("一覧表")
If WS2.Name <> "一覧表" Then
WS2.Range("H1:HP1").Copy
Do
Sheets("一覧表").Select
Cells(n, "A").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
n = n + 1
Loop
End If
Next
End Sub
>こんにちは。かみちゃん です。
>
>>以下のは未完成で、各シートからコピーではなく、一覧表の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
>という使い方ができているということですから、どのようにしたらいいかは、
>もう少し自分で考えてみましょう。
>
>自分で考えたコードが思うとおり動くようになったら、たぶんうれしいと思いますから。
|
|