>Worksheets("SheetB").Range(Cells(j, 1), Cells(j, 20)).Value = Worksheets("SheetA").Range(Cells(i, 1), Cells(i, 20)).Value
これは結構FAQに属するのですが、
中にある Cells(j, 1)たちの頭にもシート指定が必要です。
シート指定をしないと、アクティブシートとみなされますから、
例えば、SheetAがアクティブだと
Worksheets("SheetB").Range(Worksheets("SheetA").Cells(j, 1), Worksheets("SheetA").Cells(j, 20)).Value = ・・・・
と書いたことになり、エラーになります。
例えば、
With Worksheets("SheetB")
.Range(.Cells(j, 1), .Cells(j, 20)).Value _
= wsA.Range(wsA.Cells(i, 1), wsA.Cells(i, 20)).Value
End With
などのように工夫するとよいでしょう。