vbaexcel,公式,停止excel改变table中的公式

vba excel, formula, stop excel chainging the forumla in the table

我有一个创建 table 的按钮,(报告生成器) in this table i link 到具有相同语法的不同页面。

Worksheets("Engine").Range("E" & EngineStatus).Formula = "=" & newSheetName & "!I3"

正在运行,正在循环中 运行。 然而,当

我正在 link 计算每个 sheet 的值,在每个 sheet 的同一个单元格中。 但当然只适用于选定的 sheets.

问题出现在报告上,如屏幕截图所示。

在这种情况下,工作表名称是 ACDTCM0137,单元格 i3 是我在代码中输入的内容。 输出是它把我算作一个增加的数字,它不应该。 它用它的最后一个值覆盖该列中的所有行..

所以最后一个 sheet 可能被称为 BDMETHR0148 和同一个单元格.. 但最后一个是它为所有行显示的那个。

我如何确保每一行都保持上面的格式? 这意味着它应该始终按此语法

您应该阅读 Excel 中的 relativeabsolute 参考。

改为:

Worksheets("Engine").Range("E" & EngineStatus).Formula = _
                "=" & newSheetName & "!I3"

使用:

Worksheets("Engine").Range("E" & EngineStatus).Formula = _
                "=" & newSheetName & "!$I"    ' dollar sign $ before column and row locks it

您写道您有创建报告的按钮,所以下面的代码可能会更好(直到再次生成报告才重新计算 - 仅值,而不是公式):

' all vars before loop "dimmed" only once
 (...)
 Dim rngEngine As Range  
 Dim rngStatus As Range

 ' And in your loop 
 EngineStatus = ...
 newSheetName = ...

 Set rngEngine = Worksheets("Engine").Range("E" & EngineStatus)
 Set rngStatus = Worksheets(newSheetName).Range("I3")

 rngEngine.Value = rngStatus.Value