【问题标题】:Formulas for range of Cells not updating when inserting row with Macro使用宏插入行时单元格范围的公式不更新
【发布时间】:2014-12-29 11:56:46
【问题描述】:

我对在 Excel 中使用宏还很陌生,所以如果这是一个愚蠢的问题,我深表歉意。 首先,我正在创建一个电子表格,用于跟踪我每周的支出并进行设置,以便在我的智能手机上轻松操作。我有三组费用(食物、燃料、其他),总和可用列在每组的末尾。这些组是垂直组织的。

我找到了一个宏,它将在包含特定文本的单元格上方插入一行并将其放入按钮中。我遇到的问题是它没有更新任何对一系列单元格求和的公式。 例如,如果我有一个 =SUM(B2:B5),然后使用宏在该范围内插入一行,它不会将“B5”更新为“B6”。

我需要在宏中添加什么内容才能更新工作表上的公式吗?

这是宏:

Dim Col As Variant
Dim BlankRows As Long
Dim LastRow As Long
Dim R As Long
Dim StartRow As Long

    Col = "B"
    StartRow = 1
    BlankRows = 1

        LastRow = Cells(Rows.Count, Col).End(xlUp).Row

        Application.ScreenUpdating = False

        With ActiveSheet
For R = LastRow To StartRow + 1 Step -1
If .Cells(R, Col) = "Food Total:" Then
.Cells(R, Col).EntireRow.Insert Shift:=xlUp
End If
Next R
End With
Application.ScreenUpdating = True

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这很可能发生,因为您在 B6 中有 SUM 公式,并且您在第 6 行插入新行。=SUM(B2:B5) 公式从未包含 B6,因此当您插入新行时它不会自动调整。

    在包含=SUM(B2:B5) 公式的行之间新建一个空白行,并将公式更改为=SUM(B2:B6)(包括空白行)。现在,当您在第 6 行插入新行时,公式将调整为 =SUM(B2:B7)。空白行不会影响SUM 公式的结果,您可以更改高度甚至回填以使其看起来像底部边框。

    【讨论】:

    • 我对如何调整宏有点困惑。我想做一些事情,我可以通过执行 R-1 并将其转储到另一个变量来调整“R”,但它似乎不起作用。有关宏的详细信息,请参阅我编辑的帖子
    • @Dr.Krieger - 是的,这正是它正在做的事情。它找到包含 SUM 公式的行(例如 Food Total:)并插入一行。您需要在其上方插入一个空白行,将该行包含在SUM 公式中并将插入行更改为.Cells(R-1, Col).EntireRow.Insert Shift:=xlUp
    猜你喜欢
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多