1

Excel で vba を使用してある範囲を別の範囲にコピーしようとしていますが、何もコピーできません。これは私のコードです:

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

コードの前の時点で、次のように述べています。

currentItem_y = ActiveCell.Row

destination_y = ActiveCell.Row

私は目的地と現在の参照が正しいことを知っています。

Worksheets("SEARCH SHEET").Range(Cells(destination_y, 1), Cells(destination_y, 25)).Select

正しいセルがコピーされて貼り付けられるように設定されていることを知っています。

4

1 に答える 1

3

セルを特定のワークシートに属するものとして修飾する必要があります。そうしないと、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
于 2013-11-11T16:07:47.630 に答える