首页 > 解决方案 > 在 Excel 中插入一行但保留其当前格式

问题描述

我的Excel 工作表中有一个Sum特定的单元格(比如说)。"A1:A5"通常,每当我在 上手动插入一行时"A1",总和就会扩大,所以新的 Range 是"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

这并没有改变结果。

编辑2:

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

它看起来像什么

每当我手动添加一行 ( rightclick line 152 -> insert cells) 时,这个小表就会展开,所有内容都会向下移动,所以让我们假设:

我有一个从 B:50 到 B:179 的单元格,现在SUM是在单元格中并从到。此外,表格的格式用于新行(就表格而言,列具有上面单元格的背景/边框。B,180SUMB,181B:50B:180A:K

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

标签: excelvba

解决方案


对我来说,这很有效:

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

推荐阅读