「ループ」が終了したら、範囲内の最初のセルを選択します

「ループ」が終了したら、範囲内の最初のセルを選択します

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 

関連情報