Вставить строки на основе переменных - PullRequest
0 голосов
/ 14 июля 2020

У меня есть приведенный ниже код для вставки строк. Я считаю, что это немного медленно. v - это количество строк, которые нужно добавить, а lRow + 1 - это начальная позиция для добавления.

For q = 1 To v
                    
    ExpectedFeesTbl.ListRows.Add (lRow + 1)
    ExpectedFeesTbl.ListRows(lRow).Range.Copy
    ExpectedFeesTbl.ListRows(lRow + 1).Range.PasteSpecial Paste:=xlPasteFormats
    ExpectedFeesTbl.ListRows(lRow + 1).Range.PasteSpecial Paste:=xlPasteFormulas
                        
    Application.CutCopyMode = False
Next q

Спасибо

1 Ответ

1 голос
/ 14 июля 2020

Вам не нужно добавлять строки в l oop, поскольку вы знаете, сколько строк нужно добавить. Добавление всех v строк за пределами l oop сразу должно ускорить код.

'Add rows
ExpectedFeesTbl.Rows(lRow + 1).EntireRow.Resize(v).Insert Shift:=xlDown 

'Copy information to new rows
For q = 1 To v
    ExpectedFeesTbl.ListRows(lRow).Range.Copy
    ExpectedFeesTbl.ListRows(lRow + 1).Range.PasteSpecial Paste:=xlPasteFormats
    ExpectedFeesTbl.ListRows(lRow + 1).Range.PasteSpecial Paste:=xlPasteFormulas
                        
    lRow = lRow + 1
Next q

Application.CutCopyMode = False

обратите внимание, что я добавил lRow = lRow + 1, потому что в вашей исходной стоимости определение lRow не изменилось и, следовательно, каждая итерация l oop скопирована и вставлена ​​в одни и те же места.

Дополнительно , возможно, можно будет свести копирование-вставку к структуре, которая не требуется al oop. Это зависит от структуры вашей книги

...