在Excel中插入一行,但保持其当前格式

时间:2018-07-24 12:23:51

标签: excel vba

我在Excel工作表中的特定单元格上有一个Sum(让我们说"A1:A5")。通常,每当我在"A1"上手动插入一行时,总和都会扩大,因此新的范围是"A1:A6"。现在,当我使用VBA在"A1"插入一行时,我的总和来自"A2:A6",而不是"A1:A6"。如何插入一行但基本上保持当前格式(以便总和自动展开)?

我用于插入的代码:

 dest.Rows(index).Insert shift:=xlShiftDown
 dest.Rows(index).PasteSpecial xlPasteValues

其中dest是我要扩展的工作表。

编辑:

我试图使用宏并使用该代码,但不幸的是它没有用。

生成的代码:

Rows("167:167").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

我的新代码:

 dest.Rows(index).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
 dest.Rows(index).PasteSpecial xlPasteValues

那并没有改变结果。

Edit2:

我将提供一张图片来阐明我想做什么:

What it looks like

每当我手动添加一行(rightclick line 152 -> insert cells)时,此小表都会扩展并且所有内容都向下移动,因此我们假设:

我在SUM单元格中有一个B,180,它从B:50到B:179,现在SUMB,181单元格中,并且从{{1 }}到B:50。另外,表格的格式用于换行(就表格而言,所以B:180列具有上面单元格的背景/边界。

当我使用我的代码时,它只是插入了一个新的空白行而没有保留格式。

1 个答案:

答案 0 :(得分:2)

这对我来说很有效:

Sub copyExpanded()

    Dim rng As Range

    Set rng = ActiveSheet.Range("A5")

    rng.Offset(1).EntireRow.Insert
    rng.EntireRow.Copy rng.Offset(1).EntireRow

End Sub