0

コピーする列の前の列の基準に基づいて、あるシートから別のシートにデータの範囲をコピーできるマクロを作成しようとしています。

列 B は基準列です。この列のいずれかの行に 1 がある場合、列 C から AN は 1 がある行からコピーされ、そのシートの上部から始まる別のシートに貼り付けられます。

次のコードがあります。基準を満たす最初の行を見つけて、この行を 2 番目のシートにコピーしますが、コードは基準を満たす他の行を見つけるためにループスルーしません。基準が満たされた各インスタンスをループしてコピーするようにコードを調整するにはどうすればよいですか?

Sub testIt()

Dim i As Integer

    Application.ScreenUpdating = False

    Sheets("DataDump").Activate

    For i = 2 To Range("B2").End(xlDown).Row()
        If Range("B" & i).Value = 1 Then
            Range("C" & i, "AN" & i).Copy
            Sheets("PriceData").Activate
            ActiveSheet.Range("B2", "AM2").Select
            ActiveSheet.Paste
        End If
    Next i

    Application.ScreenUpdating = True

End Sub
4

1 に答える 1

0
Sub testIt()

Dim i As Long, shtSrc As Worksheet, rngDest As Range

    Application.ScreenUpdating = False

    Set shtSrc = Sheets("DataDump")
    Set rngDest = Sheets("PriceData").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)

    For i = 2 To shtSrc.Range("B2").End(xlDown).Row
        If shtSrc.Range("B" & i).Value = 1 Then
            shtSrc.Range("C" & i & ":AN" & i).Copy rngDest
            Set rngDest = rngDest.Offset(1, 0)
        End If
    Next i

    Application.ScreenUpdating = True

End Sub
于 2013-06-25T17:25:22.367 に答える