我从xml文件中读取一个节点,并尝试将其中一个属性解析为单个属性。
Dim x_coord_single As Single
Dim x_coord_string As String
x_coord_string = node.Attributes.getNamedItem("x_coord").Text
x_coord_single = CSng(x_coord_string )
我指定x_coord_string
后,它等于"9.0647"
但CSng
函数返回90647
我希望x_coord_single
为9.0647
。
我直接尝试CSng("9.0647")
,但结果相同。
有关其原因的任何建议?
我无论如何都会影响到MS Access 2010。
答案 0 :(得分:3)
试试这样:
Public Function fnStrChangeCommas(ByVal myValue As Variant) As String
fnStrChangeCommas = Replace(CStr(myValue), ".", ",")
End Function
x_coord_single = CSng(fnStrChangeCommas(x_coord_string ))
它应该有效,因为您的语言区域设置使用,
作为小数分隔符,VBEditor使用.
。
要查看系统在VBA中使用的分隔符,请运行以下代码:
Public Sub TestMe()
Debug.Print "Decimal separator: "; Application.DecimalSeparator
Debug.Print "Thousands separator: "; Application.ThousandsSeparator
End Sub
如果它返回:
Decimal separator: ,
Thousands separator: .
然后您可以考虑使用fnStrChangeCommas
功能。
答案 1 :(得分:1)
简单通用的方法是使用 Val :
x_coord_single = CSng(Val(x_coord_string))