加快macros观复制/偏移
下午好,
我有这个macros从一个工作表复制值到另一个工作表上的不同页面。 例如:
Sheet1.A1到Sheet2.K2,Sheet1.A2到Sheet2.AA2,Sheet1.A3到Sheet2.AQ2
我是这样做的:
Sheets("Inlog").Range("A1").Activate For i = 4 To k + 1 ActiveCell.Offset(rowOffset:=0, columnOffset:=10).Activate ActiveCell.Value = Sheets("CBT").Range("J" & i).Value Next
代码本身运行良好,但这不是唯一的循环,因为我希望从Sheet1复制多个范围到Sheet2。
我的完整的macros是诀窍,但大约需要4分钟才能完成。 更新的Excel版本的同事们甚至更久。
我的VBA技能是非常基本的,所以任何专业提示或其他方法来加速呢?
谢谢!
除了IIJHFII的build议,你应该避免使用ActiveCell
,而是使用Range
-Objects。
您可以通过将Dim rng as Range
并通过使用偏移来将Range
保存在variables中
Set rng = rng.Offset(rowOffset:=0, columnOffset:=10)
它们的工作方式与ActiveCell
完全相同(因为它也是一个Range
-Object),因此您还可以设置.Value
属性。
尝试closures屏幕更新:
application.screenupdating = False Sheets("Inlog").Range("A1").Activate For i = 4 To k + 1 ActiveCell.Offset(rowOffset:=0, columnOffset:=10).Activate ActiveCell.Value = Sheets("CBT").Range("J" & i).Value Next application.screenupdating = True
应该节省一点时间在这种事情上
Dim off As Long off = 1 For i = 4 To k + 1 Sheets("Inlog").Cells(1, off * 10).Value = Sheets("CBT").Cells(i, 10).Value off = off + 1 Next
这应该这样做,它应该稍微快一点。 此外,你可以禁用自动计算和屏幕更新,把这个代码的开始:
With Application .ScreenUpdating = False .Calculation = xlCalculationManual End With
而这最后:
With Application .ScreenUpdating = True .Calculation = xlCalculationAutomatic End With
目前我正在复制一个值,然后将下一个值复制到相同的位置,但在下一个页面右侧。 我重写了这段代码,以便不是右转一页,而是下一页:
For i = 4 To k Sheets("Inlog").Range("K" & (2 + 16 * (i - 3))) = Sheets("CBT").Range("K" & i) Next
事实certificate,这是更快的方式。
屏幕更新也有帮助,谢谢!