我有VBA编码添加行和它复制的第8行连同格式和公式。我还创建了输入框来添加我需要添加的行数。
Sub RectangleRoundedCorners7_Click()
Dim howMany As Long
howMany = InputBox("How many rows?")
Dim i As Long
For i = 1 To howMany
Range("A8:A9").Select
Range("A8").Activate
With ActiveCell.EntireRow
.Copy
.Offset(1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
On Error Resume Next
.Offset(1).SpecialCells(xlCellTypeConstants).Value = ""
Application.CutCopyMode = False
On Error GoTo 0
End With
Next
End Sub
字符串
问题是,当我添加新行时,该行将位于第8行之下。这使得我在添加新行之前在单元格中写下的项目向下移动,并像图像一样创建空间。
Sample what happen if I click button add row & enter "2" in the input box. Two new row added at row number 9 & 10.
我想要的是新添加的行总是在包含单词“空格”的行的顶部。也就是说,新行应该总是添加到我的表的最低层,但在行包含单词“空格”或行“总计”之前。
This is what I want when I click add new row button的
请帮帮忙。谢谢。
1条答案
按热度按时间tcbh2hod1#
首先,避免使用
Select
和Activate
方法。大多数时候,他们什么也不提供。只要直接提到你需要的细胞。在这种情况下,您需要列A中包含数据的最后一个单元格的行。本声明:
Range("A1").End(xlDown)
将在2个条件下从列A(包含数据的最后一个单元格)返回。1.单元格A2不为空。
据我所知,你的数据符合这些条件,所以这就可以完成工作了。
字符串