优化VBA代码并摆脱Workbook.activate和range.select?

时间:2013-07-12 06:32:57

标签: excel vba

我有一个宏将代码从一个工作簿复制到另一个工作簿。我的代码很长,如果可能的话我想缩短它(也可以更加独立于宏录制器)

我的代码如下所示:

Workbooks("export.XLSX").Activate
Range("A2:A" & Range("A" & Rows.Count).End(xlUp).row).Copy
Workbooks("ORDERS.CSV").Activate
Range("X3").Select
Selection.End(xlDown).Offset(1, -18).Select
ActiveSheet.Paste
Workbooks("export.XLSX").Activate

此块针对不同的列重复。有没有办法缩短这个?

更多例子:

Range("C2:C" & Range("A" & Rows.Count).End(xlUp).row).Copy 
Workbooks("ORDERS.CSV").Activate 
Range("X3").Select Selection.End(xlDown).Offset(1, -14).Select 
ActiveSheet.Paste 
Workbooks("export.XLSX").Activate 
Range("G2:G" & Range("A" & Rows.Count).End(xlUp).row).Copy 
Workbooks("ORDERS.CSV").Activate 
Range("X3").Select Selection.End(xlDown).Offset(1, -13).Select 
ActiveSheet.Paste 
Workbooks("export.XLSX").Activate

1 个答案:

答案 0 :(得分:0)

首先添加Application.ScreenUpdating = False

Workbooks("export.XLSX").Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).Copy
Workbooks("ORDERS.CSV").Range("X3").End(xlDown).Offset(1, -18).Select.PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

然后按照相同的模式 Application.Screenupdating = True