将TextBox.Value转换为Double转换为VBA(Excel 2013)

时间:2017-02-23 13:14:01

标签: excel vba excel-vba type-conversion double

我将TextBox放入我的表单中,用户可以在其中输入值。 在VBA中,我需要将值从string转换为double。

我这样做:

Private Sub UserForm_Initialize()

    '....some code
    Dim new_value As Double
    new_value = CDbl(TextBox6.Value)

End sub

但我收到以下错误:

enter image description here

2 个答案:

答案 0 :(得分:6)

CDbl预计已有数字,但如果文本框为空,则TextBox6.Value为空字符串。 CDbl无法将空字符串转换为double。

您可以先验证文本框是否为数字值以避免此

If IsNumeric(TextBox6.Value) Then
    new_value = CDbl(TextBox6.Value)
Else
    new_value = 0
End If

或者,Val()功能可能是您的选择。

new_value = Val(TextBox6.Value)

答案 1 :(得分:0)

如果允许用户使用其他字符(例如 $ 符号),则以下功能可能会有用:

'
' Skips all characters in the input string except
'  the first negative-sign, digits, and the first dot
'
Function ParseNumber(ByVal s As String) As Double
    ParseNumber = 0#
    Dim char As String
    Dim i As Integer
    Dim digits$
    Dim isNegative As Boolean
    Dim isPastDot As Boolean
    For i = 1 To Len(s)
        char = Mid(s, i, 1)
        If char >= "0" And char <= "9" Then
            digits = digits + char
        ElseIf char = "-" Then
            If Len(digits) <= 0 Then
                isNegative = True
            End If
        ElseIf char = "." Then
            If Not isPastDot Then
                isPastDot = True
                digits = digits & "."
            End If
        End If
    Next i
    ParseNumber = CDbl(digits)
    If isNegative Then
        ParseNumber = 0 - ParseNumber
    End If
End Function