我在主题方面有问题。如何在A1
中创建公式,例如= 3.14 * A2
此代码无效,并返回错误在最终版本中,myVal将由其他功能提供
Public Sub DecimalInFormulaTest()
Dim myVal As Double
myVal = 3.14
ActiveSheet.Cells(1, 1).FormulaR1C1 = "=" & myVal & "*R1C2"
End Sub
我找到了一个解决方案,但这有点奇怪。我尝试使用CStr(),但是没有用只是Str()正常工作]
Public Sub DecimalInFormulaTest()
Dim myVal As Double
myVal = 3.14
ActiveSheet.Cells(1, 1).FormulaR1C1 = "=" & Str(myVal) & "*R1C2"
End Sub
还有一件事。我在小数点分隔符不是逗号的区域
这是因为CStr
会根据特定语言环境转换值。在某些语言环境中,小数点是逗号,
,当尝试将其写入公式时,最终会导致错误。
这可能是意外的,因为在编写此类语言环境公式时,您也必须用逗号编写它们,但是它在VBA中无法正常工作。当您使用代码编写公式时,它们必须是“特定于英语的”,即使用英语功能,点作为小数点分隔符。
因此,如果Str(num)
而不是3.14
,num=3.14
将返回3,14
,这解决了您的问题。
相当长的解决方案,但是更好地表示了要解决的问题:
Replace(CStr(3.14), ",", ".")