为什么VBA提出一个“类型不匹配”错误,当我使用“格式(字符串变量,‘####’)和字符串变量的值设置为0.0

为什么VBA提出一个“类型不匹配”错误,当我使用“格式(字符串变量,‘####’)和字符串变量的值设置为0.0

问题描述:

我的股票交易代码格式的价格变化(单变量)发送到我的手机,并限制无意义数字的数量当价格变化为零时,模块会产生一个“类型不匹配”的错误,所有的非零值都可以正常工作,我写了一个简单的模块来展示这种行为。为什么VBA提出一个“类型不匹配”错误,当我使用“格式(字符串变量,‘####’)和字符串变量的值设置为0.0

Sub test_format() 
    Dim test_single As Single, output As String 
    test_single = 0# 
    output = Str(Format(test_single, "###.#")) 
    Debug.Print test_single; output 
End Sub 
+1

你不应该需要在格式函数上应用str(),因为格式函数总是返回一个字符串。如果你想确保格式只接受一个字符串,那么在Str函数中封装变量(在这种情况下是test_single)。请记住,虽然Str需要数字输入。 –

您需要删除STR()函数

Sub test_format() 
    Dim test_single As Single, output As String 
    test_single = 112.25 
    output = Format(test_single, "##0.0") 
    Debug.Print output 
End Sub 

我的输出:

112.3 

编辑:更新格式为“## 0.0”。现在,如果你得到的值为0.0,它不会只返回“。”,但实际上会返回0.0

+0

解决了“类型不匹配”错误。但是,当我设置test_single = 0.0时,输出将返回为“。” (只有小数点)。我正在运行Office 365 –

+0

您可以尝试格式化(test_single,“###。#0”)还是“###。#0;”? – Dahark

+0

好的,我认为我找到了解决方案。它是“## 0.0”。这对我有用,我会编辑我的答案。 – Dahark