セルを特定のワークシートに属するものとして修飾する必要があります。そうしないと、ActiveSheet を使用すると想定されますが、これは必要なものではありません。
私の好みは、よりオブジェクト指向のプログラミングを使用することです。オブジェクトのCells
部分を修飾する方が簡単です。Range
だからあなたのコード:
Worksheets("SEARCH SHEET").Range(Cells(destination_y, 1), Cells(destination_y, 25)).Value
= Worksheets("STOCK-INDIV").Range(Cells(currentItem_y, 1), Cells(currentItem_y, 25)).Value
destination_y
との値currentItem_y
が正しいことを確認してから (参照を使用しないように修正したいと思いActiveCell
ます)、コードを次のように変更できます。
Dim wsSearch As Worksheet
Dim wsStock As Worksheet
Dim sourceRange as Range
Dim destRange as Range
'## Define worksheet object variables
Set wsSearch = Worksheets("SEARCH SHEET")
Set wsStock = Worksheets("STOCK-INDIV")
With wsSearch
'## Explicitly define a range object on this Worksheet
Set destRange = .Range(.Cells(destination_y,1), .Cells(destination_y,25))
End With
With wsStock
'## Explicitly define a range object on this Worksheet
Set sourceRange = .Range(.Cells(currentItem_y, 1), .Cells(currentItem_y, 25))
End With
'## Transfer values from sourceRange to destRange
destRange.Value = sourceRange.Value