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
String 如何在Excel中将字符串转换为数字,反之亦然_String_Vba_Excel_Type Conversion - Fatal编程技术网

String 如何在Excel中将字符串转换为数字,反之亦然

String 如何在Excel中将字符串转换为数字,反之亦然,string,vba,excel,type-conversion,String,Vba,Excel,Type Conversion,我有一些XML文件,其中包含以“.”作为十进制分隔符存储的十进制数。我创建了Excel工作簿,用于编辑XML中的数据。MSXML用于从XML中读取数据,然后显示在工作表中。存储数据后,我用从表中读取的新值修改DOM结构,并保存XML 问题是,当我将十进制数转换回字符串时,为了将它们保存为XML中的值,使用了用户在Windows区域设置中指定的十进制分隔符 我需要一种方法来强制存储十进制数字,在所有情况下都使用“.”作为十进制分隔符。这是可能的吗?如何用新值修改DOM结构——以编程方式?怎么做 您

我有一些XML文件,其中包含以“.”作为十进制分隔符存储的十进制数。我创建了Excel工作簿,用于编辑XML中的数据。MSXML用于从XML中读取数据,然后显示在工作表中。存储数据后,我用从表中读取的新值修改DOM结构,并保存XML

问题是,当我将十进制数转换回字符串时,为了将它们保存为XML中的值,使用了用户在Windows区域设置中指定的十进制分隔符


我需要一种方法来强制存储十进制数字,在所有情况下都使用“.”作为十进制分隔符。这是可能的吗?

如何用新值修改DOM结构——以编程方式?怎么做


您是否可以使用
格式(Cell.value,#0.0”)
?还可以尝试
格式(CDbl(Cell.Value),“#0.0”)
。如果这不起作用,你能不能加入一个
替换(值“,”,“)
?如果不使用数千个分隔符,这应该没问题。

使用
Str
功能。它只将句点
识别为有效的十进制分隔符

Dim d as Double
Dim s as String
d = 3.25
s = Str(d) 
' s is now " 3.25"
请注意,
Str
为数字符号保留一个前导空格。如果您不希望正数前面有空格,只需
Trim
结果:

s = Trim(Str(d))
' s is now "3.25"

@Jean Francois因为我们谈论的是i18n,所以您应该使用CStr(用于国际应用)函数,而不是Str(其中.dot是浮点数的分隔符,在法语中不太常用,逗号是分隔符,例如:7,54)


我只做xmlNode.Text=cell.Value。我尝试了你的建议,但结果仍然有“,”作为小数点分隔符。使用替换是我的最终解决方案。我只需要使用Format函数确保没有同时包含十进制和千位分隔符的数字。我在两个方向上都遇到了问题,我需要能够读取和写入XML值。如果CDbl(“1.000”)=1000,那么num=CDbl(Replace(value),“,”,”),否则num=CDbl(value)End,如果你没有要求在两个方向上都有效的东西,那么我现在就可以阅读这个代码了。。。但您的解决方案看起来是一个很好的方法。问题是:“我需要一种方法,在所有情况下都使用
作为十进制分隔符来强制存储十进制数字。”。这就是我的答案。
Sub myFunction()
    Dim num As Double
    Dim str As String

    num = 3.251
    str = CStr(num) ' convert a number into a String

    num = Val(str) ' convert a String into an integer
    num = Trim(str) ' convert a String into a Variant

    str = Trim(num) ' notice this works the other way around

End Sub