Самый эффективный способ добавить форматирование Excel - VBA

У меня есть макрос, который добавляет сотни строк данных в таблицу Excel. Я вызываю процедуру из цикла, которая вставляет каждую строку данных. Я применяю форматирование строки каждый раз, когда вставляю эти данные. Однако во время тестирования я обнаружил, что могу вставлять все данные примерно на 3/4 секунды быстрее (3,3 с против 4,11 с), когда я неПрименяйте форматирование построчно, но все сразу. Проблема, которую я пытаюсь преодолеть, заключается в том, что не все строки имеют одинаковое форматирование; Тем не менее, существует предсказуемая закономерность. Две строки одного форматирования и одна строка различного форматирования. Есть ли способ без зацикливания применить эти два различных формата в одном, что позволило бы мне сохранить прирост производительности, который я получаю (пользователи хотели бы видеть ответ менее чем за 2 секунды, так что это может быть большим выигрышем).

В настоящее время я использую следующий код (при этом все параметры приложения, такие как обновление экрана, вычисления и события, отключены)

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

Ответы на вопрос(3)

Ваш ответ на вопрос