Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel中缺少工作表函数.value()_Excel_Vba - Fatal编程技术网

Excel中缺少工作表函数.value()

Excel中缺少工作表函数.value(),excel,vba,Excel,Vba,在电子表格公式中,=VALUE($100”)将计算为数值100。然后,我尝试通过WorksheetFunction对象在VBA中访问此函数,但它丢失了 在VBA中,我尝试了转换函数Val($100”),但返回0。那么我如何通过VBA实现这一点呢?Val()只有在字符串都是数字的情况下才真正起作用,我担心,货币符号会造成问题 如果字符串中总是有相同的货币符号,那么可能值得使用以下内容 StringName = replace(StringName, "$", "") 通过将$替换为“”,将其取出

在电子表格公式中,
=VALUE($100”)
将计算为数值100。然后,我尝试通过WorksheetFunction对象在VBA中访问此函数,但它丢失了

在VBA中,我尝试了转换函数
Val($100”)
,但返回0。那么我如何通过VBA实现这一点呢?

Val()只有在字符串都是数字的情况下才真正起作用,我担心,货币符号会造成问题

如果字符串中总是有相同的货币符号,那么可能值得使用以下内容

StringName = replace(StringName, "$", "")
通过将$替换为“”,将其取出-否则,如果字符串不总是如此可预测,下面的问题可能会有所帮助:

请参见

使用上面的示例,返回-1234.56的值:

MsgBox WorksheetFunction.NumberValue("-$1,234.56", ".", ",")
请注意,如果结果不是数字,则会抛出错误。例如(交换逗号分组和十进制字符参数,在本例中无效):


我不明白为什么上面的链接没有任何版本信息。目前日期为2019年‎-‎05‎-‎23-不知道这是因为它是新的还是最近更新的。

在电子表格公式中,=值($100”)将计算为100的数值
-你确定吗?在我的excel中,它的计算结果没有达到100@newguy mine也不这么认为,但有趣的是,它非常乐意为客户评估“100英镑”和“100欧元”100@danl您是在向该函数传递文本字符串,还是在引用货币格式的单元格。因为如果它是一根线,它就不会工作。它将与单元格引用一起工作,单元格引用有值,但只是格式化了。@newguy二者-我有两个单元格,按字面意思键入为=value(£100)和=value(€100),还有两个单元格是=value(B2),例如,其中B2='£100或'€100。这两种方法都工作正常,并且在使用$而不是$或€@Allen时,这两种方法都会引发错误:
=VALUE(“$100”)
是否有效取决于区域设置和Excel的语言版本。他们的工作方式是一样的。因此,也许
CDbl(“$100”)
可以在VBA中为您的Excel工作。Val()只有在字符串都是数字的情况下才有效-
?Val(“42非真”)
.WorksheetFunction.NumberValue仅适用于Excel 365或v2019及以上版本。
MsgBox WorksheetFunction.NumberValue("-$1,234.56", ".", ",")