【问题标题】:VBA EXCEL to add empty row above a specific row [OPEN]VBA EXCEL在特定行上方添加空行[打开]
【发布时间】:2017-02-07 10:55:42
【问题描述】:

我正在尝试编写一些 VBA,它允许按钮添加一个空行,保持相同的格式,就在 SUM 公式所在的行上方。

到目前为止,我创建了一个空行,但我不知道如何实现代码以让新行继承 same 格式样式(包括边框和格式单元格)。

到目前为止我的代码是:

    Sub InsertRev()
    Dim c As Range
    Set Rng = ActiveSheet.Range("d1:d5000")
    For dblCounter = Rng.Cells.Count To 1 Step -1
        Set c = Rng(dblCounter)
        If c.Value Like "*TOTAL*" Then
        c.EntireRow.Insert
    End If
    Next dblCounter
End Sub

任何帮助将不胜感激。

【问题讨论】:

  • 其实应该会自动继承上一行的格式,你检查了吗?
  • 不,它没有,实际上它适用于格式单元格,但不适用于布局。即一些单元格的边距。

标签: vba excel button


【解决方案1】:

您可以为Insert 方法指定参数:

Sub InsertRev()
    Dim c As Range
    Set Rng = ActiveSheet.Range("d1:d5000")
    For dblCounter = Rng.Cells.Count To 1 Step -1
        Set c = Rng(dblCounter)
        If c.Value Like "*TOTAL*" Then
            c.EntireRow.Insert xlShiftDown, xlFormatFromLeftOrAbove
        End If
    Next dblCounter
End Sub

【讨论】:

  • 我之前尝试过这种方法,但它不保持上述单元格的边框。我不明白为什么......
【解决方案2】:

你能不能只复制和粘贴新插入的数据行,从表头复制?...

TheInsertedRange.PasteSpecial Paste:=xlPasteFormats

类似:

Sub InsertRev()
    Dim c As Range
    Dim Ptr As Range
    Set Rng = ActiveSheet.Range("d1:d5000")
    For dblCounter = Rng.Cells.Count To 1 Step -1
        Set c = Rng(dblCounter)
        If c.Value Like "*TOTAL*" Then
            Set Ptr = c
            Ptr.EntireRow.Insert
            c.Copy
            Ptr.Offset(-1).PasteSpecial Paste:=xlPasteFormats
       End If
    Next dblCounter
End Sub

类似的...

【讨论】:

  • 我试过这段代码,但不幸的是它不会让新生成的行继承前(旧)行的单元格的边框。
  • 这里没有任何继承。您只是从其他数据中复制数据格式。为我工作。顺便说一句,如果您要复制 1 个单元格,它只会使用 1 个单元格格式。如果您使用以下内容复制说 3 个单元格:c.Resize(, 4).Copy 它将在新插入的范围内复制 4 个单元格.. 等等
  • 应该说如果你复制说 4 个单元格
  • 数据格式没问题,这从来都不是问题。问题出在新生成的单元格的边框上,我希望它们有一个右边框(就像上面行中的单元格一样),而不是新行中的单元格有 none。这就是我真正想要的。
  • 是的,我明白了,但边框是单元格格式。那也是抄的。至少它是给我的 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-10
相关资源
最近更新 更多