Evaluate()
方法应用于string
时会返回double
。
Val()
函数也会返回double
。
Evaluate("123") = 123
Val("123") = 123
在这种情况下两者之间是否存在差异?
答案 0 :(得分:1)
评估将 Microsoft Excel名称 (字符串)转换为对象或值
你刚刚选错了例子。
Microsoft Excel名称:
Microsoft Excel中可以使用以下类型的名称 方法:公式。
A1风格的参考。您可以使用任何对
的引用A1风格表示法的单细胞。 所有参考文献都被认为是绝对参考文献。范围。您可以使用范围,交叉和联合运算符(分别为冒号,空格和逗号)和引用。
定义名称。您可以使用语言指定任何名称 宏。
外部参考。你可以使用!运算符引用单元格或另一个工作簿中定义的名称 - 例如,Evaluate([BOOK1.XLS] Sheet1!A1“)。
图表对象。您可以指定任何图表对象名称,例如“图例”,“绘图区域”或“系列1”,以访问该对象的属性和方法。例如,Charts(“Chart1”)。Evaluate(“Legend”)。Font.Name返回图例中使用的字体名称。
答案 1 :(得分:0)
Val()函数除了是一个简单的转换函数外还可以使用。它将返回所有数字字符,直到它达到非数字字符。如果您尝试转换包含非数字数据的字符串,CStr()将返回错误。例如,Val(" 123abc")将返回数字123和Cint(" 123abc")将返回数据类型不匹配错误。
你的意思是Eval()如果是这样,这将尝试执行任何必要的计算,因此Eval(" 2 * 3")= 6但是Val(" 2 * 3" )= 2
答案 2 :(得分:0)
此信息可能有些过时,但在Excel 2003 VBA Programmer's Reference中,保罗·金梅尔(Paul Kimmel)提到了以下关于Val()
的内容。
Val是我们用来转换的最常见功能 字符串到数字。它实际上只转换美国格式的数字 字符串到一个数字。所有其他字符串到数字转换 函数尝试将整个字符串转换为数字并引发一个 错误,如果他们不能。然而,Val从左到右工作直到它 找到一个它不会识别为数字一部分的字符。许多 通常在数字中找到的字符,例如$和逗号 足以阻止它识别号码。瓦尔不承认 美国格式的日期字符串。
换句话说,如果Val运行的不是字符串中的数字,它将返回到该点的所有数字:
debug.? val("100")
100
debug.? val("100$")
100
debug.? val("100,000")
100
另一方面,Evaluate()用于将Microsoft Excel名称转换为对象或值",正如JLILI Aman在之前的答案中所述,并且如果出现错误则会抛出错误它会在字符串中遇到无法转换为数字的内容:
debug.? evaluate("100")
100
debug.? evaluate("100$")
Error 2015
debug.? evaluate("100,000")
Error 2015
评估最常用于在宏中使用工作表函数。它有时也被用作引用范围的简写。