首页 > 解决方案 > 如何用范围偏移替换选择?

问题描述

我有一个宏,它遍历文件上的挂起列表,并将数据从工作表复制到另一个工作表中的每个项目。

由于列表中有 200 个项目,并且大约有 200 次复制和粘贴操作,因此运行时间太长。

我正在尝试优化,删除复制和粘贴,然后选择。

在我的旧代码中,我使用范围和偏移量来重复一些操作,现在我不能使用它们,所以我不知道如何重写代码。

这是旧代码

Sheets("Motor").Select
Range("A140").Select
Selection.Copy
Sheets("Registros_Saidas_RS1").Select
MyRange.Offset(0, -3).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=True

这就是我正在尝试的

Sheets("Registros_Saidas_RS1").MyRange.Offset(0, -3).Value = Sheets("Motor").Range("A140").Value

我收到一个错误,我无法使用此方法。

标签: excelvba

解决方案


删除这样的选择

' acts on the ActiveWorkbook.  Is that what you want?
Sheets("Motor").Range("A140").Copy
' requires MyRange to have been previously set to the required range
MyRange.Offset(0, -3).PasteSpecial _
    Paste:=xlPasteValues, _
    Operation:=xlNone, _
    SkipBlanks :=False, _
    Transpose:=True

然后你可以使用

MyRange.Offset(0, -3).Value = _
Sheets("Motor").Range("A140") _
.Resize(MyRange.Rows.Count, MyRange.Columns.Count).Value

推荐阅读