我将TextBox放入我的表单中,用户可以在其中输入值。 在VBA中,我需要将值从string转换为double。
我这样做:
Private Sub UserForm_Initialize()
'....some code
Dim new_value As Double
new_value = CDbl(TextBox6.Value)
End sub
但我收到以下错误:
答案 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