我使用这段VBA代码来截断Excel中的输入数字,但在某些情况下,它仍然四舍五入的数字,而不是截断它们。当我尝试一些特定的数字时,它不起作用。我找到的例子是:1.11116,17.84116。
请注意,VBA将应用于操作员将输入数据的空单元格。这就是为什么我不能简单地使用trunc(A1,4)
或类似的命令。
这是我遇到的唯一一个代码不起作用的数字。两者都以6结尾,但问题没有模式。
这就是代码:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const TARGET_RANGE As String = "A1:A10"
Const DECIMAL_PLACES As Long = 5
On Error GoTo ClearError
Dim irg As Range: Set irg = Interesect(Me.Range(TARGET_RANGE),Target)
If irg Is Nothing Then Exit Sub
Dim Num As Long: Num = 10^DECIMAL_PLACES
Application.EnableEvents = False
Dim iCell As Range, iValue, dValue As Double
For Each iCell In irg.Cells
iValue=iCell.Value
If VarType(iValue)=vbDouble Then
dValue=Int(iValue * Num)/Num
If dValue<iValue Then
iCell.Value=dValue
End If
End If
Next iCell
ProcExit:
On Error Resume Next
If Not Application.EnbaleEvents Then Application.EnableEvents = True
On Error GoTo O
Exit Sub
ClearError:
Resume ProcExit
End Sub
字符串
有人知道为什么会发生这种情况以及如何解决它吗?谢谢你,
请让我知道如果你有任何想法。
2条答案
按热度按时间0ve6wy6x1#
使用WorksheetFunction.FLOOR(1.11116,0.0001)--> 1.1111
字符串
y1aodyip2#
工作表变更:自动截断小数2
改善
RoundUp
,它似乎是轻松处理需求的完美候选。字符串
的数据
即时窗口中的结果
型
发生了什么事?
型
您的文章中的错别字
型