Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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 替换表达式不';t在VBA中使用"&引用;_Excel_Vba - Fatal编程技术网

Excel 替换表达式不';t在VBA中使用"&引用;

Excel 替换表达式不';t在VBA中使用"&引用;,excel,vba,Excel,Vba,我需要使用replace表达式将,“替换为” 例如,我有:115147058823529 它不适用于“或任何其他字符 Range("K" & rw).Value = Replace(Range("K" & rw).Value, ",", ".") 结果:115147058823529 而对于“,” 结果:115..147058823529 我找不到任何解释。 我想让它为运行“ 数字格式是通用的,我不想弄乱它 我甚至试着用“m.”替换“,”,结果是:115m.1470588235

我需要使用
replace
表达式将
,“
替换为

例如,我有:
115147058823529

它不适用于
或任何其他字符

Range("K" & rw).Value = Replace(Range("K" & rw).Value, ",", ".")
结果:
115147058823529

而对于
“,”

结果:
115..147058823529

我找不到任何解释。 我想让它为
运行“

数字格式是通用的,我不想弄乱它

我甚至试着用
“m.”
替换
“,”
,结果是:
115m.147058823529
然后将
m
替换为
,得到:
115.147058823529
。。这真的很奇怪

问题在于您使用的区域设置和小数点分隔符。法文/德文小数点分隔符是逗号,美文小数点分隔符是点

另一方面,VBA仅使用点作为十进制分隔符。因此,VBA用逗号读取数字,并在内部用点进行转换。然后,它在里面找不到任何逗号


Replace()
本身工作正常:

Sub TestMe()

    Dim someString As String
    someString = "115,147058823529"
    someString = Replace(someString, ",", ".")

    MsgBox someString

End Sub
其他信息:


您使用的区域设置是什么?德语?@vityta,那是法语,完全一样。问题不在VBA本身,而是在Excel设置中。我认为您需要将单元格格式化为文本:右键单击单元格->单元格格式->选择“text”@Sigrist-这对VBA不起作用。我尝试了
Range(“K”)和rw.Value=Replace(CStr(Range(“K”)和rw.Value),“,”)
,但它给出了相同的结果result@aekbj-是的,这是因为您的单元格中没有逗号,尽管您看到了它。VBA看到一个点。如果您使用评论中的“良信良信”建议,并将单元格转换为
文本
,则该功能将正常工作。但这将不再是一个数字。
Sub TestMe()

    Dim someString As String
    someString = "115,147058823529"
    someString = Replace(someString, ",", ".")

    MsgBox someString

End Sub