Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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
非盎格鲁-撒克逊标点符号导致的VBA错误_Vba_Excel - Fatal编程技术网

非盎格鲁-撒克逊标点符号导致的VBA错误

非盎格鲁-撒克逊标点符号导致的VBA错误,vba,excel,Vba,Excel,我试图将函数应用于单元格,但由于标点符号设置(小数由逗号分隔,而非点分隔),我无法将变量插入字符串中。我在下面举了几个例子: Sub Test1() Dim X As Double Dim strFormula As String X = 0.5 strFormula = "=A1+" & X Cells(2, 1) = strFormula End Sub Sub Test2() Dim X As Double Dim st

我试图将函数应用于单元格,但由于标点符号设置(小数由逗号分隔,而非点分隔),我无法将变量插入字符串中。我在下面举了几个例子:

Sub Test1()
    Dim X As Double
    Dim strFormula As String

    X = 0.5

    strFormula = "=A1+" & X
    Cells(2, 1) = strFormula
End Sub

Sub Test2()
    Dim X As Double
    Dim strFormula As String

    strFormula = "=B1+0.5"

    Cells(2, 2) = strFormula
End Sub

Sub Test3()
    Dim X As Double
    Dim strFormula As String

    strFormula = "=C1+0,5"

    Cells(2, 3) = strFormula
End Sub
唯一有效的子类是Test2,其他子类给我一个对象定义的错误。本地窗口中的所有变量都是使用逗号作为十进制分隔符定义的,因此中Test1中的X定义为0,5,字符串定义为“=A1+0,5”(与Test3相同),excel无法识别

有人知道如何在不改变标点设置的情况下解决这个问题吗

编辑:我尝试实现以下代码,但它只更改工作表中的设置,而不更改VBA代码中的设置

Sub Macro1()
    With Application
        .DecimalSeparator = "."
        .ThousandsSeparator = ","
        .UseSystemSeparators = False
    End With
End Sub
你应使用:

Cells(2, 3).Formula = strFormula
Range.Formula
需要一个句点分隔符,这是通常在VBA代码中使用的


Range.FormulaLocal
类似,但需要用户语言的公式,因此通常仅用于设置来自用户输入的公式。

关于
strFormula=“=A1+”&Replace(X,Application.DecimalSeparator,”)
?您的代码示例显示
.formula
,但是你的解释是
.FormulaLocal
。我想我会给你一个自己检查和修复的机会。非常感谢你,公式化本地作品!我知道Formul代码,但我没有意识到它也有一个本地版本。只是补充一点,VBA中的变量写为“X=0.5”,不能使用逗号作为十进制分隔符,但它仍然读为“X=0.5”