首页 文章

VBA Excel - 在下面以相同的格式插入行,包括边框和框架

提问于
浏览
3

我想构建一个宏,在所选单元格下面以相同的格式插入一行 . 这是我到目前为止的代码:

Public Sub insertRowBelow()
ActiveCell.Offset(1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrAbove
End Sub

问题是:此代码仅部分传输格式 . 它确实对新行使用相同的背景颜色,但它不使用单元格的边框/框架 . 我怎样才能做到这一点?

4 回答

  • 2

    最简单的选择是使用Excel复制/粘贴 .

    Public Sub insertRowBelow()
    ActiveCell.Offset(1).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrAbove
    ActiveCell.EntireRow.Copy
    ActiveCell.Offset(1).EntireRow.PasteSpecial xlPasteFormats
    Application.CutCopyMode = False
    End Sub
    
  • 9
    Private Sub cmdInsertRow_Click()
    
        Dim lRow As Long
        Dim lRsp As Long
        On Error Resume Next
    
        lRow = Selection.Row()
        lRsp = MsgBox("Insert New row above " & lRow & "?", _
                vbQuestion + vbYesNo)
        If lRsp <> vbYes Then Exit Sub
    
        Rows(lRow).Select
        Selection.Copy
        Rows(lRow + 1).Select
        Selection.Insert Shift:=xlDown
        Application.CutCopyMode = False
    
       'Paste formulas and conditional formatting in new row created
        Rows(lRow).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone
    
    End Sub
    

    这就是我使用的 . 经过测试和工作,

    谢谢,

  • 1

    插入行时,无论CopyOrigin如何,如果插入位置上方和下方的边框相同,Excel将仅在插入的单元格上放置垂直边框 .

    我正在遇到插入列的类似(但已旋转)的情况,但复制/粘贴对我的工作簿来说太慢了(数万行,多列和复杂格式) .

    我发现三个解决方法不需要从源行复制格式:

    • 确保垂直边框在插入位置的上方和下方具有相同的重量,颜色和图案,因此Excel将在新行中复制它们 . (这就是“当我这样做时会伤害”,“停止这样做!”回答 . )

    • 使用条件格式设置边框(公式为"=TRUE") . 条件格式将被复制到新行,因此您仍然以border.Caveats结束:

    • 条件格式边框仅限于细线条 .

    • 最适用于边框相对一致的工作表,因此您不必创建一堆条件格式设置规则 .

    • 插入行后,在VBA中设置插入行的边框 . 在范围上设置边框要比复制和粘贴所有格式要快得多,以获得边框(假设您提前知道边框应该是什么,或者可以从上面的行中对其进行采样而不会丢失性能) .

  • 3

    好吧,使用宏记录,并手动完成,我最终得到了这个代码..这似乎工作..(虽然它不像你的一个班轮;)

    lrow = Selection.Row()
    Rows(lrow).Select
    Selection.Copy
    Rows(lrow + 1).Select
    Selection.Insert Shift:=xlDown
    Application.CutCopyMode = False
    Selection.ClearContents
    

    (我把ClearContents放在那里,因为你表示你想要格式,我假设你不想要数据;))

相关问题