考虑以下片段。它将相同的公式写入两个单元格A1
and A2
Sub Main()
With Range("A1")
.Formula = "=1+1"
End With
With Range("A2")
.Formula = "=1+1"
.Value = .Value
End With
End Sub
第二with
块用途.Value = .Value
它计算/执行公式,因此公式从公式栏中消失。参考从公式栏中隐藏公式供参考。
现在,添加另一个 with 块
With Range("A3")
.Formula = "=1+1"
End With
Range("A4") = Evaluate(Range("A3").Formula)
您向单元格添加公式A3
那么新单元格的公式就是Evaluated()
进入另一个细胞A4
。结果如图
我认为上述情况表明.Value = .Value
and Evaluate()
做同样的事。
但是,下面的代码使用上述两种方法从封闭的工作簿中提取价值。我创建了一个工作簿book9.xlsm
对于这个例子hello
放入单元格 A1。book9.xlsm
是我要拉的那个A1
的值来自。考虑代码
Sub PullValue()
With Range("A1")
.Formula = "='C:\Users\admin\Desktop\[book9.xlsm]Sheet1'!A1"
End With
With Range("A2")
.Formula = "='C:\Users\admin\Desktop\[book9.xlsm]Sheet1'!A1"
.Value = .Value
End With
Range("A3").Formula = "='C:\Users\admin\Desktop\[book9.xlsm]Sheet1'!A1"
Range("A4") = Evaluate(Range("A3").Formula)
End Sub
首先with
块将公式放入单元格中A1
值来自于book9.xlsm
。它被执行,因此拉出的值是hello
但公式栏显示实际情况.Formula
这是C:\...
.
第二with
块使用.Value = .Value
如上面演示的公式评估并通过用结果替换公式来隐藏公式。
Range("A3") 与第一个相同with
block.
现在 (A4
)我遵循与第一个示例(本问题中的第一个片段)相同的原则Evaluate()
但是这个公式这次不起作用。
请查看所有激活的单元格值和每个单元格的公式栏
所以现在我不能这么说.Value = .Value
等于Evaluate()
.
的言论评价()说它可以与公式一起使用。但在我的例子中,它不起作用。
公式中是否用作参数Evaluate()
受限制的?我一直认为 Evaluate 非常强大,但事实证明.Value = .Value
实际上更加强大。尽管它们非常相似,但它们在某种程度上有所不同(但我认为这可能是我的错,因为我为此示例选择的公式可能受到限制或限制)。我想我已经展示了是什么让他们两个既相似又不同。它仍然是 50%/50%,我无法准确判断它们是否相同。如果有人能够解释这里缺少什么,那就太好了。