Inputbox不接受双号VBA excel

时间:2017-07-31 07:09:49

标签: excel vba excel-vba

我有一个类似foreach (ListItem li in chkCompanies.Items) { li.Attributes.Add("Style", "border: solid 1px black;"); } 的声明,数字被声明为number= InputBox("Number for:", "Number:")但是当我输入一个双数字,例如 5.4 时,进入输入框并将其传输到单元格,单元格显示 54 ,它删除了该点。

我该如何解决这个问题?

THX

2 个答案:

答案 0 :(得分:3)

如果您想要检测Excel用于 十进制分隔符 的设置,请尝试以下代码:

Patch

如果您想将其更改为DeltaConfig.Init((cfg) => { cfg.ExcludeProperties<Todo>(x => x.id); }); ,请使用以下行:

MsgBox "Excel uses " & Chr(34) & Application.DecimalSeparator & Chr(34) & " as a decimal seperator"

答案 1 :(得分:1)

不幸的是,VBA在处理十进制分隔符的差异方面非常糟糕。在您的情况下,您应该使用逗号(,),而不是标点符号/点(.)。

修改:使用Application.DecimalSeparator方法,无论区域设置如何,它现在都可以使用。但请注意,如果更改Excel的逗号分隔符设置似乎会导致一些问题(似乎VBA在某种程度上忽略了此设置)。但是,如果不进行更改,则该示例应该适用于所有其他cas

Sub GetNumberFromInputBox()
    Dim val As String
    Dim num As Double

    'Get input
    val = InputBox("Number for:", "Number:")

    Debug.Print Application.DecimalSeparator

    If IsNumeric(val) Then
        'Try to convert to double as usual
        num = CDbl(val)

        'If the dot is removed automatically, then
        'you will se a difference in the length. In
        'those cases, replace the dot with a comma,
        'before converting to double
        If Len(val) <> Len(num) Then
            If Application.DecimalSeparator = "," Then
                num = CDbl(Replace(val, ".", ","))
            Else
                num = CDbl(Replace(val, ",", "."))
            End If
        End If

        'Pring the number
        Debug.Print "You selected number: " & num

    Else
        'If its not a number at all, throw an error
        Debug.Print "You typed " & val & ", which is not a number"

    End If

End Sub