为什么在VBA中使用Range.Formula for Excel 2003而不是Range.Value?

Mr_*_*ags 6 excel vba excel-2003 excel-vba

我想知道为什么在Excel 2003的VBA代码中我们甚至需要使用Range.Formula将公式写入单元而不是仅使用Range.Cell?他们都将字符串写入成为论坛的单元格,并且该公式起作用(从我测试过的).

ActiveCell.Value="=If(True,""yes"",""no"")"
Run Code Online (Sandbox Code Playgroud)

ActiveCell.Formula="=If(True,""yes"",""no"")"
Run Code Online (Sandbox Code Playgroud)

为我做同样的事情(当我选择一个单元格并在单独的单元格中分别执行上述每个代码段时).它们都在单元格中显示"是"值,并且当我单击以查看每个单元格时存储公式.

我查看了微软开发中心的信息:

Range.Formula Excel 2013的Range.Formula属性(Excel 2003没有此属性的页面)

Range.Value Excel 2003的属性(展开"应用于Range对象的Value属性."标题

我还搜索了"为什么使用Range.Formula而不是Range.Value VBA Excel"并找不到与我的问题相关的任何内容.

有人说,用Range.Value.

其他人说Range.Formula堆栈溢出使用(对不起,我丢失了对确切问题的引用......)

bon*_*igo 2

从数据价值来看:

想象一下,您有整数、双精度数用于某些计算,如果您使用 .formula,您就会被搞砸。因为.FORMULA总是返回一个字符串。(任何没有设置为 .formula 的值都是普通值,而不是公式)除非您在代码中准备好了异常处理和附加功能。而按.VALUE您期望的方式返回数据的数据类型。

在检索公式方面:值是设置公式但不检索的情况下的一种方式。

因此,您会看到引入这些方法是有原因的,可以帮助您使用所需的正确属性。:-)