非盎格鲁-撒克逊标点符号导致的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”