在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
发表评论