如何用vba在excel中插入多个空行、多个空列、多个单元格区域?

在excel单元格中当单击鼠标右键,选择插入命令时,会弹出如下所示的插入选项:

在vba中,可以使用range对象的Insert方法实现这样的操作。它有两个参数,分别是Shift参数和CopyOrigin参数。

其中Shift参数指定Range对象代表的单元格区域如何移动,可以是往右移动xlShiftToRight 或者 xlShiftDown 往下移动。如果省略这个参数,excel会根据Range对象所代表的单元格区域的形状来决定如何移动。
CopyOrigin参数则表示被插入的单元格区域的格式继承自哪里,可以是 xlFormatFromLeftOrAbove从左上方继承或者是xlFormatFromRightOrBelow从右下角继承。

如果要实现插入单个或多个单元格区域或行、列,只需将range对象也指定为具体数量的单元格区域或行、列即可。

比如如下的vba代码将只插入1个单元格:

Range("a2").Insert xlShiftDown, xlFormatFromLeftOrAbove

如下的vba代码可以一次性插入4个单元格:

Range("a2:a5").Insert xlShiftDown, xlFormatFromLeftOrAbove

如下的vba代码可以一次插入4行:

Range("a2:a5").EntireRow.Insert xlShiftDown, xlFormatFromLeftOrAbove

类似地可以实现插入列的操作。

Sub QQ1722187970()
    Dim oRng As Range
    With Sheet1
        Set oRng = Range("a2")
        With oRng
            '向下移动单元格,同时将原单元格上方的格式复制到新插入的单元格
            .Insert xlShiftDown, xlFormatFromLeftOrAbove
        End With
        Set oRng = Range("a2:A5")
        With oRng
            '同时插入4个单元格,同时将原单元格上方的格式复制到新插入的单元格
            .Insert xlShiftDown, xlFormatFromLeftOrAbove
        End With
        Set oRng = Range("a2:a5").EntireRow
        With oRng
            '一次性插入4行,同时将原单元格上方的格式复制到新插入的单元格
            .Insert xlShiftDown, xlFormatFromLeftOrAbove
        End With
        Set oRng = Range("a2:a5").EntireColumn
        With oRng
            '插入一整列, 向右移动单元格
            .Insert xlShiftToRight, xlFormatFromRightOrBelow
        End With
    End With
End Sub
       

发表评论