我是新来的,我希望我能在下面正确解释我的简单代码。所以代码的作用是简单地复制特定列中的值并将它们作为值粘贴到同一工作表中的其他列。我有这个代码的原因是为了帮助用户避免多次插入相同的数据。
我使用的代码,但是,将值复制粘贴到其他列(大约10-12秒)需要花费很多时间。是否有可能使这项工作更快?或者还有另一种创建方法并加快工作的方法吗?
提前致谢!
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Sheets("Session").Range("a1:a2000").Copy
Sheets("Session").Range("y1, af1, cw1").PasteSpecial xlPasteValues
Application.ScreenUpdating = False
Sheets("Session").Range("b1:b2000").Copy
Sheets("Session").Range("ab1, ac1").PasteSpecial xlPasteValues
Application.ScreenUpdating = False
Sheets("Session").Range("v1:v2000").Copy
Sheets("Session").Range("bg1, bs1, ca1").PasteSpecial xlPasteValues
Application.ScreenUpdating = False
Sheets("Session").Range("g5:g2000").Copy
Sheets("Session").Range("ba1, bc1, be1").PasteSpecial xlPasteValues
Application.ScreenUpdating = False
Sheets("Session").Range("t1:t2000").Copy
Sheets("Session").Range("di1").PasteSpecial xlPasteValues
Application.ScreenUpdating = False
Sheets("Session").Range("x1:x2000").Copy
Sheets("Session").Range("cx1").PasteSpecial xlPasteValues
End Sub
答案 0 :(得分:1)
尝试在开头添加此行(在私有子版之后):
Application.Calculation = xlCalculationManual
和代码末尾的这一个(在结束sub之前):
Application.Calculation = xlCalculationAutomatic
禁用自动计算应加快复制粘贴过程。
答案 1 :(得分:1)
您可以直接传输值而无需复制和粘贴,这样更快,即使此方法会产生更多行。我认为With语句并不能代替更高效的代码,但它们确实可以提供更整洁的代码。
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
With Sheets("Session")
With .Range("a1:a2000")
.Range("y1").Resize(.Rows.Count).Value = .Value
.Range("af1").Resize(.Rows.Count).Value = .Value
.Range("cw1").Resize(.Rows.Count).Value = .Value
End With
With .Range("b1:b2000")
'etc
End With
End With
Application.ScreenUpdating = True
End Sub