Effizienteste Möglichkeit zum Hinzufügen von Excel-Formatierung - VBA

Ich habe ein Makro, das einem Excel-Arbeitsblatt Hunderte von Datenzeilen hinzufügt. Ich rufe eine Prozedur aus einer Schleife auf, die jede Datenzeile einfügt. Ich habe die Formatierung für die Zeile jedes Mal angewendet, wenn ich diese Daten einfüge. Während meines Tests habe ich jedoch festgestellt, dass ich alle Daten ca. 3/4-mal schneller einfügen kann (3,3 Sek. Gegenüber 4,11 Sek.), Wenn ich die Formatierung nicht zeilenweise, sondern auf einmal anwende. Das Problem, das ich zu überwinden versuche, ist, dass nicht jede Zeile die gleiche Formatierung hat; Es gibt jedoch ein vorhersehbares Muster. Zwei Zeilen mit einer Formatierung und eine Zeile mit unterschiedlicher Formatierung. Gibt es eine Möglichkeit, diese beiden verschiedenen Formate ohne Schleife gleichzeitig anzuwenden, sodass ich den Leistungszuwachs, den ich erhalte, beibehalten kann (Benutzer wünschen sich eine Antwort unter 2 Sekunden, sodass dies ein großer Gewinn sein könnte)?

Ich verwende derzeit den folgenden Code (Anwendungseinstellungen wie Bildschirmaktualisierungen, Berechnungen und Ereignisse sind währenddessen deaktiviert)

Private Sub BuildTerminalSummary(ByRef terminals, ByVal timeFrame)
    Dim terminal As clsTerminal
    Dim curSheet As Worksheet
    Dim breakLoop As Boolean
    Dim terminalCode As String
    Dim rowNumber As Long

    Set terminal = New clsTerminal
    Set curSheet = Sheets("Terminal Summary")

    rowNumber = 7

    'Remove all content, borders, and tint
    ClearPage curSheet, rowNumber

    For Each terminal In terminals         
        AddDetailData curSheet, terminal.InfoArray, rowNumber
        AddDetailData curSheet, terminal.PriorInfoArray, rowNumber + 1
        AddDiffPercentFormulas curSheet, terminal.DiffPercentInfoArray, rowNumber + 2

        rowNumber = rowNumber + 2

    Next terminal

    'Make sure the columns are wide enough to display the numbers
    curSheet.Cells.EntireColumn.AutoFit

End Sub

Private Sub AddDetailData(ByRef curSheet, ByRef data, ByVal rowNumber)
    With curSheet
        With .Cells(rowNumber, 3).Resize(1, 16)
            .value = data
            .Style = "Comma"
            .NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""??_);_(@_)"
        End With
        'This overides the formatting in the revenue columns with currency instead of comma style
        With .Cells(rowNumber, 5).Resize(1, 2)
            .Style = "Currency"
            .NumberFormat = "_($* #,##0_);_($* (#,##0);_($* ""-""??_);_(@_)"
        End With
        With .Cells(rowNumber, 13).Resize(1, 6)
            .Style = "Currency"
        End With
    End With

End Sub

Private Sub AddDiffPercentFormulas(ByRef curSheet, ByRef data, ByVal rowNumber)
    With curSheet.Cells(rowNumber, 3).Resize(1, 16)
        .value = data
        .NumberFormat = "0.00%"
    End With

End Sub

Antworten auf die Frage(3)

Ihre Antwort auf die Frage