1枚のシート上のセクションをループするスクリプトがあります(機能テスト手順)それらの値を別のシート(結果) をセル L2 に入力します。
現在の設定方法は、セクションの数をループし、それらの値をコピーして貼り付けるというものです。結果シート列 L の次の空のセルを選択します。
ボタンを複数回押さない限り、これは問題なく動作します。ボタンを複数回押すと、コピーされた結果が既に存在する結果の下に追加されるためです。
私がやりたいのは、スクリプトを変更して、利用可能なセクションをループし、ボタンが何度も押された場合にセル L2 を選択して、更新された結果を既存の結果に貼り付けることです。
これは簡単なはずですが、理解できません。また、目的の範囲は「ATPResults」という名前になっています。
Sub Copy_ATP_Tables()
Dim SectionATP As Long, NextRow As Long
For SectionATP = 1 To 35 '36
NextRow = Sheets("Results").Range("L" & Rows.Count).End(xlUp).Row + 1 'Next empty row
Sheets("Acceptance Test Procedure").Range("APTSec" & SectionATP).Columns("A:H").Copy _
Destination:=Sheets("Results").Range("L" & NextRow) 'SpecialCells(xlCellTypeVisible)
' Range("FTPSec" & Section).Columns("G:H").SpecialCells(xlCellTypeVisible).Copy _
' Destination:=Sheets("Results").Range("N" & NextRow)
Next SectionATP
' Sheets("Results").Range("ATPResults").Select
' For SectionATP = 35 To 35
End Sub
答え1
あなたの質問を理解したことを願います。常に次のように始まるように修正しましたL2
:
Sub Copy_ATP_Tables()
Dim SectionATP As Long, NextRow As Long
NextRow = Sheets("Results").Range("L" & 2) 'This line defines where to start
For SectionATP = 1 To 35 '36
Sheets("Acceptance Test Procedure").Range("APTSec" & SectionATP).Columns("A:H").Copy _
Destination:=Sheets("Results").Range("L" & NextRow) 'SpecialCells(xlCellTypeVisible)
NextRow = Sheets("Results").Range("L" & Rows.Count).End(xlUp).Row + 1 'Moved to the end of the loop
Next SectionATP
End Sub