excel VBA添加行按钮

iovurdzv  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(217)

我有VBA编码添加行和它复制的第8行连同格式和公式。我还创建了输入框来添加我需要添加的行数。

  1. Sub RectangleRoundedCorners7_Click()
  2. Dim howMany As Long
  3. howMany = InputBox("How many rows?")
  4. Dim i As Long
  5. For i = 1 To howMany
  6. Range("A8:A9").Select
  7. Range("A8").Activate
  8. With ActiveCell.EntireRow
  9. .Copy
  10. .Offset(1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
  11. On Error Resume Next
  12. .Offset(1).SpecialCells(xlCellTypeConstants).Value = ""
  13. Application.CutCopyMode = False
  14. On Error GoTo 0
  15. End With
  16. Next
  17. 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
请帮帮忙。谢谢。

tcbh2hod

tcbh2hod1#

首先,避免使用SelectActivate方法。大多数时候,他们什么也不提供。只要直接提到你需要的细胞。在这种情况下,您需要列A中包含数据的最后一个单元格的行。
本声明:Range("A1").End(xlDown)将在2个条件下从列A(包含数据的最后一个单元格)返回。
1.单元格A2不为空。

  1. A列中的数据是连续的,即中间没有空白单元格。
    据我所知,你的数据符合这些条件,所以这就可以完成工作了。
  1. Sub RectangleRoundedCorners7_Click()
  2. Dim howMany As Long
  3. Dim i As Long
  4. howMany = InputBox("How many rows?")
  5. With Range("A1").End(xlDown).EntireRow
  6. For i = 1 To howMany
  7. .Offset(1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
  8. Next
  9. End With
  10. End Sub

字符串

展开查看全部

相关问题