根据变量插入行

Insert rows based on variables

我有下面的代码来插入行。我发现它有点慢。 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

谢谢

您不需要在循环中添加行,看您如何知道要添加的行数。立即在循环外添加所有 v 行应该会加快代码速度。

'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 的定义没有改变,因此循环的每次迭代都从完全相同的位置复制并粘贴到完全相同的位置。

另外,可以将复制粘贴归结为不需要循环的结构。不过这取决于您的工作簿结构