【问题标题】:Writing number with 2 digits after the decimal separator automatically自动在小数点分隔符后写入 2 位数字
【发布时间】:2018-02-27 15:49:35
【问题描述】:

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

我的代码是:

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

【问题讨论】:

  • (1) 你说它除以2,但你的代码实际上除以100。 (2) 你的问题到底出在哪里?您究竟在哪里需要简化,为什么? (3) 这可能是CodeReview 的问题,如果根本没有要解决的问题,它只是关于代码美感。
  • 对不起,我更正了文字。我正在寻找一种更聪明的方法来做到这一点,我的意思是,从数字键盘插入,比如 123456,然后自动将 1,234.56 放入单元格中。

标签: vba excel onchange


【解决方案1】:

在 VBA 中你可以使用这个:

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

【讨论】:

  • 谢谢@Vityata!我会检查一下。 :)
【解决方案2】:

使用 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

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

(对不起,德语截图。)

【讨论】:

  • 谢谢!我的心知道 Excel 比我使用的代码更简单!
  • 漂亮!非常感谢!
【解决方案3】:

根据作者的评论:

我的意思是,从数字键盘插入,比如 123456,得到 1,234.56 自动进入单元格

你可以除以 100:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多