VBA输入框删除十进制逗号,将double转换为字符串

时间:2015-10-19 15:39:25

标签: vba excel-vba excel

我试图创建一个输入框,其中包含一个带小数的数字作为默认值。我将Inputbox设置为公式类型,因为用户可能输入公式或引用单元格。

问题是输入框似乎剥离了逗号并将数字强制转换为字符串。我可以使用Format将此数字转换为字符串,然后返回到数字,但会丢失精度。我想了解发生了什么。

代码是:

Sub test()
    Dim Defolt As Double
    Defolt = 1.1866701960364
    Dim InputValue
    InputValue = Application.InputBox("Value?", , Defolt, , , , , 0)
    'for this example, the user just clicks OK to the default value
    Debug.Print InputValue
End Sub

结果如下: VBA inputbox coerses double to string without decimal marker

谢谢!

ps:语言环境是西班牙语。 Excel版本是Excel 2010 32位。

1 个答案:

答案 0 :(得分:2)

看看here。重要的部分就在桌子下面:

  

您可以使用Type的允许值之和。例如,对于可以接受文本和数字的输入框,请将“类型”设置为1 + 2。

并在评论中稍微进一步说明:

  

如果Type为0,则InputBox以文本形式返回公式 - 例如,“= 2 * PI()/ 360”。如果公式中有任何引用,它们将作为A1样式引用返回。 (使用ConvertFormula在引用样式之间进行转换。)

尝试将类型设置为1,看看是否仍然可以使用公式和数字。文档让我认为你可以(基本上你免费获得公式)。由于您将类型设置为0,因此您将返回默认的文本类型。