我正在尝试优化一些数据排序代码,原始代码看起来像是通过使用excels“记录宏”功能“写入”。
以下是代码中的示例。
Range("A12").Offset(z, 0).Select
Selec.Resize(Selection.Rows.Count, Selection.Columns.Count + (X2 - 1)).Select
Selection.Copy
Range("C4").Offset(y, 0).Select
ActiveSheet.Paste
为了使这段代码更有效率,我是否应该重新编写本节以涉及一个范围变量,其'.Value等于Selection数据?
X2,z和y变量用作复制功能的一部分,并逐渐增加,以便更容易阅读最终产品。它们在模块的其他地方被改变。
我希望看到一些你认为我应该做的建议。
我已经在这里阅读了非常受欢迎的“如何避免在Excel VBA宏中使用Select”的问题,我只是在寻找一些进一步的建议。
(How to avoid using Select in Excel VBA macros)
由于
答案 0 :(得分:0)
复制/粘贴效率不高。做范围(“X1”)。值=范围(“Y1”)。值更好。这就是我要做的事情
'change this
Selection.Copy
Range("C4").Offset(y, 0).Select
ActiveSheet.Paste
'to this
Range("C4").Offset(y, 0).Value = Selection.Value 'selection value is the range that is being copied.
答案 1 :(得分:0)
我想这是最简单的方法。
Range("C4").Offset(y, 0).Resize(1, x2) = Range("A12").Offset(z, 0).Resize(1, x2)
虽然我会建议:
.Offset
并使用命名范围.Copy
和.Paste
,有时您的数据可能对于剪贴板来说太大而仅使用=
- 运算符会更快.Cells( row, column )
而不是`.Cells(“A1”)。它更易于处理,并且可以通过计算更轻松地进行更改HTH