将TextBox.Value转换为双精度到VBA(Excel 2013)

将TextBox.Value转换为双精度到VBA(Excel 2013),vba,excel,type-conversion,double,Vba,Excel,Type Conversion,Double,我的表单中有文本框,用户可以在其中输入值。 在VBA中,我需要将值从字符串转换为双精度 我是这样做的: Private Sub UserForm_Initialize() '....some code Dim new_value As Double new_value = CDbl(TextBox6.Value) End sub 但我得到的错误如下: CDbl要求已经有一个数字,但如果文本框为空,则TextBox6.Value为空字符串CDbl无法将空字符串强制转换

我的表单中有文本框,用户可以在其中输入值。 在VBA中,我需要将值从字符串转换为双精度

我是这样做的:

Private Sub UserForm_Initialize()

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

End sub
但我得到的错误如下:


CDbl
要求已经有一个数字,但如果文本框为空,则
TextBox6.Value
为空字符串
CDbl
无法将空字符串强制转换为双精度字符串

您可以先验证文本框是否为数值,以避免出现这种情况

If IsNumeric(TextBox6.Value) Then
    new_value = CDbl(TextBox6.Value)
Else
    new_value = 0
End If
或者,该函数可能是您的一个选项

new_value = Val(TextBox6.Value)

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

'
'跳过输入字符串中除
'第一个负号、数字和第一个点
'
函数ParseNumber(ByVal s作为字符串)作为Double
ParseNumber=0#
Dim char作为字符串
作为整数的Dim i
模糊数字$
Dim是负布尔值
Dim isplastdot作为布尔值
对于i=1到Len(s)
char=Mid(s,i,1)

如果字符>=“0”和字符,谢谢!我做到了:new_value=CDbl(替换(TextBox6.value,“.”,“,”)),也可以。如果您有兴趣使用其他方法(将数字转换为字符串),请检查