【问题标题】:VBA Excel-Macro not referencing the way I need it toVBA Excel-Macro 没有引用我需要的方式
【发布时间】:2017-06-24 00:55:59
【问题描述】:

嘿,我录制的这个宏有这个问题。我正在使用一个包含多个工作表的工作簿,一个特定的工作表使用简单的加法和减法公式来获取两个数字之间的差异。这些公式都是相同的,并且已经输入到工作表中的所有单元格中。公式引用工作簿中其他工作表中的数字以找出差异。所以每个月都有自己的现金流,那么最后一张计算差额的表就是两个月的方差。我决定在输入公式时记录宏并将其拖过工作表并确保我打开了“相对引用”按钮。录制宏后,我更改了公式引用的工作表名称以查看会发生什么,因为我预计它没有正确计算数字,因为工作表名称现在不同了。我想解决这个问题,因为我计划在具有相同格式但不同数据和工作表名称的多个工作簿上使用此宏,但不知道如何解决这个问题 - 工作表名称与公式中的不同参考。

【问题讨论】:

  • 顺便说一句,我对 VBA 和编写宏非常陌生,(比如几天后)所以如果这是一个简单的修复,我真的不知道它。谢谢
  • 尝试使用宏记录器作为起点
  • 进入您录制的宏并将您看到的旧工作表名称替换为新工作表名称。
  • 要么改回名称,要么学习如何编辑单元格内的文本字符串(基本上学习如何以编程方式编辑公式)
  • 我真的试图完全自动化这个过程而无需再次进入代码,抱歉你能详细说明一下汤姆吗?顺便说一句,我可以用什么叫做“sheet.offset”来解决这个问题吗?

标签: vba excel


【解决方案1】:

一种可能的解决方案是将工作表命名为“对象”。

工作簿中的工作表是可以通过 VBA 编辑器属性窗口命名的对象。这与出现在网格视图底部的显示名称不同。

例如,您可以使用 PAGE_A.Range("A1").value 来代替 Sheets("Page_A").Range("A1").value

这意味着如果工作表的“显示”名称发生变化,代码将继续引用工作表的“对象”名称。只要不删除工作表,这可以工作。

在示例图像中,更改单元格 A1 的代码为

WkshtObjectName.range("A1").Value = "Hello"

您也许可以使用这种技术来绕过不断变化的工作表名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    相关资源
    最近更新 更多