VBA CSng(字符串)格式错误

时间:2017-10-25 13:00:53

标签: vba ms-access

我从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_single9.0647

我直接尝试CSng("9.0647"),但结果相同。

有关其原因的任何建议?
我无论如何都会影响到MS Access 2010。

2 个答案:

答案 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))