Vba CTE“;期望值:表达式“;来自If(不是Double.TryParse(字符串,Double))

Vba CTE“;期望值:表达式“;来自If(不是Double.TryParse(字符串,Double)),vba,ms-access,Vba,Ms Access,在构建上述函数时,我在If语句上得到一个编译错误(预期为:表达式)拉丁语将始终作为有效的DMS纬度值传递,我已确认(尽管MsgBox(SplitA(0))已被删除)事实上确实存在SplitA(0) 似乎Double.TryParse()没有成功返回布尔值,除非我误解了。发生这种情况的原因是什么?如果内存为我提供了正确的Double.TryParse()用于VB.net。我想你要找的是Cdbl把它转换成双精度的。您可以在此处找到更多有关信息: 这是一个神奇的资源,几乎所有的内置功能,您将永远需要

在构建上述函数时,我在
If
语句上得到一个编译错误(预期为:表达式)
拉丁语
将始终作为有效的DMS纬度值传递,我已确认(尽管
MsgBox(SplitA(0))
已被删除)事实上确实存在
SplitA(0)


似乎
Double.TryParse()
没有成功返回布尔值,除非我误解了。发生这种情况的原因是什么?

如果内存为我提供了正确的
Double.TryParse()
用于VB.net。我想你要找的是Cdbl把它转换成双精度的。您可以在此处找到更多有关信息:


这是一个神奇的资源,几乎所有的内置功能,您将永远需要

你是用vba还是vb.net编程的?这似乎已经做到了——我看到了一些关于
CDbl
的浮动,但无法找出两者之间的区别。感谢您的及时回复!没问题,很高兴我能帮忙。
Function LatToDecimal(latIn As String) As String
    Dim SplitA() As String
    SplitA() = Split(latIn, "°") 'A(0) is DEG.
    Dim SplitB() As String
    SplitB() = Split(SplitA(1), "'") 'B(0) is MIN.
    Dim SplitC() As String
    SplitC() = Split(SplitB(1), """") 'C(0) is SEC. C(1) is N/S.

    Dim deg As Double
    Dim min As Double 'Not yet used.
    Dim sec As Double 'Not yet used.

    If (Not Double.TryParse(SplitA(0), deg)) Then
        deg = 0
    End If

End Function