A1
和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 Range("A3")
.Formula = "=1+1"
End With
Range("A4") = Evaluate(Range("A3").Formula)
您在单元格
A3
中添加了一个公式,然后将该新单元格的公式Evaluate()
到另一个单元格A4
中。结果如下所示:
.Value = .Value
和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
块将来自book9.xlsm
的公式放入单元格A1
的值中。它被执行,因此拉出的值是hello
,但公式栏显示实际的.Formula
,即C:\...
。第二个
with
块使用.Value = .Value
,如上所示,用于评估公式并通过替换结果来隐藏公式。Range("A3")与第一个
with
块相同。现在(
A4
),我遵循第一个示例(此问题中的第一个片段)的相同原则来Evaluate()
公式,但这次不起作用。请查看每个激活单元格的值和公式栏。
所以现在,我不能说
.Value = .Value
等于Evaluate()
。
Evalutate()的备注说它可以与公式一起使用。但在我展示的示例中,它不起作用。公式在
Evaluate()
中用作参数是否有限制?我一直认为Evaluate非常强大,但事实证明,.Value = .Value
实际上更加强大。尽管它们非常相似,但它们在某种程度上是不同的(但我认为这可能是我的错,因为我选择的公式可能受到限制或限制)。我认为我已经展示了它们两个同时相似和不同之处。它仍然像50%/50%一样,我无法确定它们是否相同。如果有人能够解释这里缺少什么,那将是很好的。