【问题标题】:VBA/Excel: Tracing precedents to another sheet not workingVBA/Excel:将先例跟踪到另一个工作表不起作用
【发布时间】:2015-02-18 10:57:20
【问题描述】:

我最近开始使用朋友的 excel 项目,制作宏。我主要是通过“录制宏”功能来完成这项工作,因为我不熟悉 Visual Basic 自己编写代码,而且没有足够的时间来学习这门语言。

一切都很顺利,直到我了解到 ctrl-[ 无法在宏内跟踪单元格的先例,因为它只是选择了第一个先例链接到的单元格,并且不会针对未来的先例进行更改。我查找了如何在 Visual Basic 中对其进行编码,最后使用“Selection.Precedents.Select”来跟踪单元格的先例。因为我试图链接到的先例在不同的工作表上(仍在同一个工作簿中),所以它返回“运行时错误'1004':未找到单元格。”

看起来像这样:

Range("U5").Select
Selection.Precedents.Select

因为这不起作用,我转到“公式审核”选项卡上的“跟踪先例”按钮,它能够追溯到另一​​张表上的先例(ctrl-[也可以选择单元格)。然后,我使用不同的单元格作为同一张表上的先例测试了一个宏(因此 U5 链接到 V5,而不是另一张表上的单元格),并且它能够选择先例单元格。

我做了一些研究,发现了很多答案,只是说“使用 Selection.Precedents.Select”,我做了,但没有用。

编辑: 我得到了它的工作,我必须这样做:

Worksheets("Sensitivity Table").Activate
Range("U5").Select
Range("U5").ShowPrecedents
ActiveCell.NavigateArrow True, 1

可能不是最有效的方法,但据我所知,它有效。您只需要删除代码末尾的箭头即可。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    range 对象的 Precedents 属性仅适用于当前工作表上的范围。要获得所有先例,您需要解析公式。

    见:

    Charles Williams Answer

    Colin Legg's Blog中讨论了一个典型的方法

    【讨论】:

    • 对不起,我不太明白你所说的“解析公式”是什么意思。是否有我需要下载的程序来重写/重新格式化 VBA 编码,还是手动重写代码/单元格以使其在不使用“范围”的情况下工作?
    猜你喜欢
    • 2019-05-02
    • 2016-11-19
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多