Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何将“选择”替换为“范围偏移”?_Excel_Vba - Fatal编程技术网

Excel 如何将“选择”替换为“范围偏移”?

Excel 如何将“选择”替换为“范围偏移”?,excel,vba,Excel,Vba,我有一个宏,它遍历文件上的挂起列表,并将工作表中每个项目的数据从一个工作表复制到另一个工作表 由于列表中有200个项目,以及大约200个复制和粘贴操作,因此运行时间太长 我正在尝试优化,删除复制和粘贴,然后选择 在我的旧代码中,我使用range和offset来重复一些操作,现在我不能使用它们,所以我不知道如何重写代码 这是旧代码 工作表(“电机”)。选择 范围(“A140”)。选择 选择,复制 表格(“登记表1”)。选择 MyRange.Offset(0,-3)。选择 Selection.Pas

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

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

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

在我的旧代码中,我使用range和offset来重复一些操作,现在我不能使用它们,所以我不知道如何重写代码

这是旧代码

工作表(“电机”)。选择
范围(“A140”)。选择
选择,复制
表格(“登记表1”)。选择
MyRange.Offset(0,-3)。选择
Selection.Paste特殊粘贴:=xlPasteValues,操作:=xlNone,SkipBlank_
:=假,转置:=真
这就是我正在尝试的

Sheets(“Registros_Saidas_RS1”).MyRange.Offset(0,-3)。值=Sheets(“Motor”).Range(“A140”)。值

我得到一个错误,我不能使用此方法。

像这样删除选择

”作用于Active工作簿。这就是你想要的吗?
图纸(“电机”)。范围(“A140”)。副本
'要求以前已将MyRange设置为所需的范围
MyRange.Offset(0,-3).PasteSpecial_
粘贴:=xlPasteValues_
操作:=xlNone_
SkipBlanks:=假_
转置:=真
然后你可以用

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

如果您不在第4列或更大的列中,则无法偏移-3,因为该列不存在。MyRange是E2“Set MyRange=Range(“E2”)。MyRange是一个对象,而不是该工作表的属性。请尝试
MyRange.offset(0,-3)。Value=
当您执行
Set MyRange=Range(“E2”)时,也可以使用
它假定范围来自活动工作表。要指定该范围的工作表,请将其添加为
Set MyRange=Sheets(“Registros\u Saidas\u RS1”).Range(“E2”)
。嘿,维克托,尽量避免选择。直接将单元格作为目标。例如,将第一张工作表第1行第1列的值与第二张工作表的值设置为同一值。
工作表(1)。单元格(1,1)。值=工作表(2)。单元格(1,1)。值
这将通过一个大的factorIt工作更快,谢谢