帮助我优化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 

这应该会加快速度。 另外,看看这个页面的一些更多的速度调整