具有相对引用的Excel命名范围不计算

时间:2013-05-31 11:07:22

标签: excel excel-vba vba

我的工作簿中有一个名为“cellabove”的命名区域,它始终引用它所使用的单元格上方的单元格。名称的RefersToR1C1属性为“=!R [-1] C”。这允许它应用于工作簿中的任何工作表。

当我运行一个删除某些行的宏时,即使我用application.calculatefullrebuild结束宏,它们的公式中包含cellabove的一些单元格也不会重新计算。但是,当我按CTRL + SHIFT + ALT + F9手动强制完全重建时,单元格会重新计算。

如何强制相对引用的命名范围进行刷新?

2 个答案:

答案 0 :(得分:1)

尝试在代码中添加其中一个计算选项,以查看它们是否有效。

Sub Calculate_It()

    ActiveSheet.Calculate
''// Equivalent to Shift+F9 Recalculates the active worksheet

    Application.Calculate
''// Equivalent to F9 Recalculates all worksheets in all open workbooks

    Application.CalculateFull
''// Equivalent to Ctrl+Alt+F9 Recalculates all worksheets in all open workbooks (Full recalculation)

    Application.CalculateFullRebuild
''// Equivalent to Shift+Ctrl+Alt+F9 Rebuilds the dependency tree and does a full recalculation

End Sub

答案 1 :(得分:1)

使用以!开头的!在定义的名称公式是恕我直言不可取,因为有长期存在的错误 您可以使用=INDIRECT("R[-1]C",FALSE)代替