帮助我优化VBA Excel代码,将表单上每行的某些列复制到另一个表中
我需要将表A中每一行的某些列复制到表B中。
我创build了一个创build2个匹配列号的数组(变体)的子,所以我可以将A图中的第3列映射为等于B图中的第8列等。
一切正常,事情是非常缓慢的,这里是:
Sub insertIntoSelectedOpps(opCols As Variant, siebelCols As Variant, ByVal length As Integer) Dim insertRange As Range Dim siebelRange As Range Dim rowCount As Integer Set insertRange = shSelected.Range("a3", "bb4") 'very wide table!' Set siebelRange = shDatabase.UsedRange.Rows rowCount = siebelRange.Rows.count MsgBox "siebel row count: " & rowCount For i = 2 To rowCount Set insertRange = shSelected.Range("a3", "bb4") insertRange.Insert For x = 1 To length - 1 If opCols(x) <> -1 Then 'unequal to -1' insertRange.Cells(1, opCols(x)).value = siebelRange.Cells(i, siebelCols(x)).value End If Next x Next i End Sub
不要担心,如果没有find映射中的列名称,则是业务逻辑。
通常,在大处理之前停止屏幕更新和计算是一个好主意:
在msgbox
:
Application.ScreenUpdating = False xlCalc = Application.Calculation Application.Calculation = xlCalculationManual
之后
Application.Calculation = xlCalc Application.ScreenUpdating = True
这应该会加快速度。 另外,看看这个页面的一些更多的速度调整