быстрый способ скопировать форматирование в Excel

У меня есть два бита кода. Сначала стандартную копию вставьте из ячейки A в ячейку B

Sheets(sheet_).Cells(x, 1).Copy Destination:=Sheets("Output").Cells(startrow, 2)

Я могу сделать почти то же самое, используя

Sheets("Output").Cells(startrow, 2) = Sheets(sheet_).Cells(x, 1)

Теперь этот второй метод намного быстрее, избегая копирования в буфер обмена и вставки снова. Однако он не копирует форматирование, как первый метод. Вторая версия почти мгновенно копирует 500 строк, а первый метод добавляет около 5 секунд времени. И окончательная версия может быть более 5000 ячеек.

Поэтому мой вопрос может быть изменен во второй строке, чтобы включить форматирование ячеек (в основном цвет шрифта), оставаясь при этом быстрым.

В идеале я хотел бы иметь возможность копировать значения ячеек в массив / список вместе с форматированием шрифта, чтобы я мог выполнить дальнейшую сортировку и операции с ними, прежде чем я "вставлю" их обратно на лист ..

Таким образом, мое идеальное решение было бы что-то вроде

for x = 0 to 5000
array(x) = Sheets(sheet_).Cells(x, 1) 'including formatting
next

for x = 0 to 5000
Sheets("Output").Cells(x, 1)
next

возможно ли использовать строки RTF в VBA или это возможно только в vb.net и т. д.

Ответ*

Просто чтобы увидеть, как мой метод origianl и новый метод сравниваются, вот результаты или до и после

Новый код = 65 мс

Sheets("Output").Cells(startrow, 2) = Sheets(sheet_).Cells(x, 1)
Sheets("Output").Range("B" & startrow).Font.ColorIndex = Sheets(sheet_).Range("A" & x).Font.ColorIndex 'copy font colour as well

Старый код = 1296 мсек

'Sheets("Output").Cells(startrow, 2).Value = Sheets(sheet_).Cells(x, 1)
'Sheets(sheet_).Cells(x, 1).Copy
'Sheets("Output").Cells(startrow, 2).PasteSpecial (xlPasteFormats)
'Application.CutCopyMode = False

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

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