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