【发布时间】:2016-09-18 09:37:12
【问题描述】:
用更好的例子编辑
我正在尝试使用 Evaluate 函数来评估命名范围的公式引用。但是,在使用 Evaluate 函数时,如果您没有明确说明工作表引用和单元格引用,它将假定活动工作表作为单元格引用。这会导致错误的结果
在我的实际项目中,我试图只评估命名范围公式的一部分,因此它变得更加棘手。
使用我正在尝试做的一个基本示例,假设您在表格 1 单元格 A1 中有以下公式,其名称为 MyCell:
="Don't evaluate this part"&"My Result Is " & A2
如果活动工作表是工作表 2,并且您运行以下代码,它将给您错误的结果(这是一个快速而肮脏的示例来说明问题)
Dim s As String
s = Replace(Range("MyCell").Formula, """Don't evaluate this part""&", "")
Debug.Print Evaluate(s)
它没有给我工作表 1 的单元格 A2 中的值,而是给我工作表 2 的单元格 A2 中的值。
对此有什么想法吗?
这是我找到的最接近的,但这不是我的确切问题(尽管标题相似)并且它没有提供解决方案: Excel VBA evaluate formula from another sheet
【问题讨论】:
-
Sheet 2 中的单元格 A1 是否命名为 MyCell?您是否总是准确地评估单元格中的公式?如...是否有理由您不只是检查该单元格的值而不是公式?
-
Excel 是按设计运行并在必要时运行。如果你不能像我的第一条评论中提到的那样抓住价值,它会变得有点棘手,但有办法做到这一点
-
为了更好地说明我的意思,请参阅我的新示例。
-
回答您的问题。 1) 表 2 中的单元格 A1 未命名为 MyCell。相反,工作表 1 中的单元格 A1 被命名为 MyCell。 2) 我正在评估公式的部分内容(请参阅上面的编辑)。
标签: excel vba evaluate named-ranges