更快地复制单元格值

时间:2018-01-22 11:56:51

标签: excel excel-vba vba

我是新来的,我希望我能在下面正确解释我的简单代码。所以代码的作用是简单地复制特定列中的值并将它们作为值粘贴到同一工作表中的其他列。我有这个代码的原因是为了帮助用户避免多次插入相同的数据。

我使用的代码,但是,将值复制粘贴到其他列(大约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

2 个答案:

答案 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