自动在小数点分隔符后写入 2 位数字

Writing number with 2 digits after the decimal separator automatically

我有一个有效的代码,但如果可能的话,我想简化它。 当范围内单元格的值发生变化时,此代码有效。它检查插入的数据是否是一个数字,然后自动除以一百,所以我不必使用分隔整数和小数的字符,当你有数千个数字要插入时,这会产生很大的不同sheet.

我的代码是:

Public Sub Worksheet_Change(ByVal Target As Range)
Set Intersecao = Intersect(Target, Range("ENTRANUMEROS"))

If (Not (Intersecao Is Nothing)) And (Not IsEmpty(Intersecao)) Then

    On Error GoTo Fim

    Dim Entrada As Double: Entrada = Intersecao.Value

    Application.EnableEvents = False
    If IsNumeric(Entrada) Then
        Entrada = Entrada / 100
        Intersecao.Value = Entrada
    Else
        MsgBox ("Invalid data.")
        Intersecao.Value = ""
        Intersecao.Select
    End If
    Application.EnableEvents = True

End If

Fim:
End Sub

使用Excel选项高级 > 自动插入小数点 > 2
一般加小数点。

除了使用 VBA 切换该选项外,没有办法只在定义的范围内使用此选项:

Public Sub Worksheet_SelectionChange(ByVal Target As Range)
    Set Intersecao = Intersect(Target, Range("ENTRANUMEROS"))

    If (Not (Intersecao Is Nothing)) And (Not IsEmpty(Intersecao)) Then
        Application.FixedDecimal = True
        Application.FixedDecimalPlaces = 2
    Else
        Application.FixedDecimal = False
    End If
End Sub

请注意,此示例不会保留用户选择的原始状态。

(抱歉德国截图。)

在 VBA 中你可以使用这个:

Sub TestMe()
    Application.FixedDecimal = True
    Application.FixedDecimalPlaces = 2
End Sub

基于作者的评论:

I mean, insert from numeric keybord, say, 123456, and gets 1,234.56 automatically into the cell

你可以除以 100:

result = Format(Number/100, "#,##0.00")

或者,将最后 2 位数字作为子字符串的小数:

result = MID(number, 1, LEN(number)-2)&"."& RIGHT(Number, 2)