Excel 2013 VBAmacros – EntireRow.Insert循环无法正常工作

我正在使用Excel 2013 Home和Office。 有人知道为什么这些代码行不能按预期工作吗?

rSel = ActiveCell.Row 'Insert 10 Rows For nCol = 1 To 10 Cells(rSel + 1, 1).EntireRow.Insert nCol = nCol + 1 Next nCol 

简单地说,循环应该在活动单元格下面插入10行,但最终只有8个。即使我将10更改为更高的数字,我最终也只有8个新行。 我也尝试了一个更简单的单行代码(下面),但结果是一样的。

 Cells(rSel + 1, 1).EntireRow.Resize(10).Insert 

在任何人回答之前,我想详细说明这是什么(如果有帮助)。 工作表包含范围A1:F5中的标题和范围A8:F18中的页脚。 数据input从单元格A6开始使用数据validation。 工作表必须按照原样devise。

当用户从列表中select选项时,将在该行下方插入新行。 所以,如果我从A6的列表中select一个项目,则会在下方插入一个新的行。 在A10(第五select),上面的代码被执行,推测页脚向下10行,使它出现在第二页的整体,并不会看起来奇怪,当它打印出来。 然后,一组代码格式化并复制标题,并将其粘贴到页脚上方第二页上的新的一组行中。 我将在第6页和第6页的最后一个select之后,在第1页以最后2个空行结束。

除了部分当我想要插入10个新的行,因为它一直只给我8,其他的一切都很完美。

为了在ActiveCell下面插入10行,使用下面的代码片段:

 Sub InsertRow() rSel = ActiveCell.Row 'Insert 10 Rows For nCol = 1 To 10 Cells(rSel + 1, 1).EntireRow.Insert Next nCol End Sub 

(删除导致错误的行: nCol = nCol + 1

为了获得更好的性能,可以使用下面的代码片段一次插入10行:

 Sub InsertRowBestPerformance() r = ActiveCell.Row 'Insert 10 Rows below ActiveCell Rows(r + 1 & ":" & r + 10).EntireRow.Insert End Sub 

这可以用一行代码以紧凑的forms写出来:

 Rows(ActiveCell.Row + 1 & ":" & ActiveCell.Row + 10).EntireRow.Insert 

希望这会有所帮助。

只需使用此命令插入10行即可

 activecell.Resize(10).EntireRow.Insert ' insert above ActiveCell activecell.offset(1).Resize(10).EntireRow.Insert ' insert below ActiveCell