【问题标题】:Insert a Row into Excel but keep its current formatting在 Excel 中插入一行,但保留其当前格式
【发布时间】:2018-07-24 22:15:00
【问题描述】:

我的 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

这并没有改变结果。

编辑2:

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

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

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

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

【问题讨论】:

  • 在 Excel 中解决格式问题的最简单方法是记录一个宏,并查看当您执行正确动作时它会产生什么。通常经过一些优化后解决方案是相当好的。
  • @Vityata 遗憾的是,这对我不起作用,我编辑了我的帖子
  • 通常,为什么我在“A1”上手动插入一行,总和被扩大,所以新的范围是“A1:A6” - 真的发生了吗?还是仅当您在A2 上而不是A1 上插入一行时才会发生这种情况?
  • @Vityata 我更新了我的问题描述,请看图片。事实上,当我选择 A2 时,他可能会扩展,但在这种情况下,我猜无论如何他都应该扩展,问题是他没有保留格式,即使提供了 CopyOrigin 作为参数

标签: excel vba


【解决方案1】:

对我来说这很有效:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-13
    • 2021-12-03
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2012-01-22
    相关资源
    最近更新 更多