首页 > 解决方案 > VB Round函数改变小数点分隔符

问题描述

我向世界各地的用户提供了一个电子表格,然后当然必须使其适应各种区域格式。我使用这些区域设置在美国创建电子表格。俄罗斯的一位用户提到了一个问题,即对话框中的文本框未显示正确的小数分隔符(显示句点而不是逗号)。这是我为尝试纠正问题而创建的代码:

Sub Decimals()
    Dim ws_Test As Worksheet
    
    Set ws_Test = ThisWorkbook.Worksheets("Test")

    On Error GoTo errhandling
        stDec_Sep = Application.International(xlDecimalSeparator)
        If stDec_Sep = "." Then
            uf_Decimal.tbDecimal = Round(ws_Test.Range("Decimal_Value"), 3)
            uf_Decimal.Show
            Exit Sub
        End If
        If stDec_Sep = "," Then
            uf_Decimal.tbDecimal.Value = Round(Val(GetNumber_Comma(ws_Test.Range("Decimal_Value"))), 3)
            uf_Decimal.Show
            Exit Sub
        End If
    errhandling:
        MsgBox "Operation failed."
        Exit Sub
    End Sub

我们发现 Round 函数将数字转换回小数点的句点。在 Round 函数解决了问题之后,将转换从小数点转换为逗号。

uf_Decimal.tbDecimal.Value = GetNumber_Comma(Round(Val(ws_Test.Range("Decimal_Value"), 3)))

我发现在任何地方都没有提到 Round 函数的这个怪癖。有没有人见过这种行为?

标签: vbarounding

解决方案


推荐阅读