Разместит ли мой используемый диапазон в массив ускорение передачи этих данных? - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть большое количество файлов, которые я помещаю из каталога в централизованную книгу. Я храню имена рабочих листов в массиве varWsName и у меня есть несколько операторов Case, чтобы пропустить некоторые этапы до следующего. Он работает как надо, но я знаю, что метод Copy занимает, вероятно, больше времени, чем создание массива.

В настоящее время у меня есть это:

                With wb.Worksheets("Sheet1")
                    .UsedRange.Copy Destination:=wbTemplate.Worksheets(varWsName(i)).Cells(1, 1)
                End With

мой вопрос: если Я поменял .UsedRange.Copy на что-то вроде:

Dim varUsedRange as variant

varUsedRange = wb.Worksheets("Sheet1").UsedRange.Value

With wb.Worksheets("Sheet1")
    varUsedRange = wbTemplate.Worksheets(varWsName(i)).Range("A1")
End With

. Будет ли это иметь значение? Я знаю, что это, вероятно, непригодный синтаксис, но общая идея есть. Мысли? * * 1013

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

использование:

Dim varUsedRange As Variant

varUsedRange = wb.Worksheets("Sheet1").UsedRange.Value
wbTemplate.Worksheets(varWsName(i)).Range("A1").Resize(UBound(varUsedRange, 1), UBound(varUsedRange, 2)).Value = varUsedRange

левая сторона должна быть целью, а правая - источником.

Они также должны быть одинакового размера, следовательно, Resize()

0 голосов
/ 28 февраля 2020

См. Ниже.

varUsedRange = wb.Worksheets("Sheet1").UsedRange.Value
wbTemplate.Worksheets(varWsName(i)).Range("A1").Resize(UBound(varUsedRange, 1), UBound(varUsedRange, 2)) = varUsedRange
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...