gpt4 book ai didi

vba - 使用可变单元格引用将范围从一张纸复制到另一张纸

转载 作者:行者123 更新时间:2023-12-04 22:06:40 25 4
gpt4 key购买 nike

我正在尝试通过 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

我知道正确的单元格被设置为复制和粘贴到。

最佳答案

您需要将单元格限定为属于特定工作表,否则假定使用 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

关于vba - 使用可变单元格引用将范围从一张纸复制到另一张纸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19909771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com