提高VBA的循环效率

acc*_*tdr 1 excel performance vba for-loop excel-vba

我有一个For循环遍历整数1到9,只是找到对应于该整数的最底部条目(即1,1,1,2,3,4,5将找到第3个"1"条目)并插入一个空白行.我将数字与字符串"FN"连接起来,该字符串只对应于此代码的应用程序,只是为了澄清.无论如何,它运行良好,但它只需要运行9个整数就相当多了.我希望有人能够帮助我调试以提高此代码的速度.谢谢!如果任何人都可以通过一个很好的方式来填充插入的空白行,并使用跨越页面标题的格式化副本("A1:L1").我试过的代码就在之前被注释掉了Next i.

Sub test()

Dim i As Integer, Line As String, Cards As Range
Dim Head As Range, LR2 As Long


        For i = 1 To 9
    Line = "FN" & CStr(i)
    Set Cards = Sheets(1).Cells.Find(Line, after:=Cells(1, 1), searchdirection:=xlPrevious)

    Cards.Rows.Offset(1).EntireRow.Insert
    Cards.Offset(1).EntireRow.Select
'    Range("A" & (ActiveCell.Row), "K" & (ActiveCell.Row)) = Range("A3:K3")
'    Range("A" & (ActiveCell.Row), "K" & (ActiveCell.Row)).Font.Background = Range("A3:K3").Font.Background

     Next i


End Sub
Run Code Online (Sandbox Code Playgroud)

Sid*_*out 6

这对我来说非常快

Sub Sample()
    Dim i As Long, line As String, Cards As Range

    With Sheets(1)
        For i = 1 To 9
            line = "FN" & i

            Set Cards = .Columns(6).Find(line, LookIn:=xlValues, lookat:=xlWhole)

            If Not Cards Is Nothing Then
                .Range("A3:K3").Copy
                Cards.Offset(1, -5).Insert Shift:=xlDown
            End If
         Next i
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)

之前

在此输入图像描述

在此输入图像描述