【问题标题】:vba excel, formula, stop excel chainging the forumla in the tablevba excel,公式,停止excel更改表格中的公式
【发布时间】:2020-07-18 18:12:34
【问题描述】:

我有一个创建表格的按钮,(报告生成器) 在此表中,我链接到具有相同语法的各个页面。

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

它正在工作,并且正在循环运行。 然而,当

我将每张纸上的值链接在每张纸上的同一单元格中。 但当然只适用于选定的工作表。

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

在这种情况下,工作表名称是 ACDTCM0137,而单元格 i3 是我放入代码中的内容。 输出是将 i 视为不应该增加的数字。 它会用它的 LAST 值覆盖该列中的所有行..

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

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

【问题讨论】:

  • 我不明白。很难相信,但也许 "!I3" 更改为 ""!$I$3" 会对您有所帮助(绝对参考)...?
  • 您没有为任何人提供足够准确的信息来回答这个问题。在您的屏幕截图中,公式以!I2 结尾,而不是!I3,这意味着您没有按照上面编写的方式插入公式(或者它以某种奇怪的方式被覆盖,可能被事件处理程序覆盖)。请看这个:stackoverflow.com/help/how-to-ask
  • @RafałB。它起作用了,使用 $$,请留下答案..

标签: excel vba excel-formula autocomplete


【解决方案1】:

您应该阅读 Excel 中的 relativeabsolute 引用。

改为:

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

用途:

Worksheets("Engine").Range("E" & EngineStatus).Formula = _
                "=" & newSheetName & "!$I$3"    ' 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

【讨论】:

    猜你喜欢
    • 2013-06-10
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多