【发布时间】:2021-09-29 02:23:36
【问题描述】:
我很抱歉,我意识到这可能已经被问过无数次了,但我已经尝试过寻找,但找不到像我这样的情况。我还在学习,我之前也从未在这里发过帖,所以请对我温柔一点。
我正在使用 Excel VBA。我有两个单元格(PICKAmt 和 INVAamt,同一张表),它们每个都有完全相同的数字,例如399.80.
-
即使在将单元格格式化为 0.00 VBA 后,仍将它们都读取为“399.8”,但仍表示它们不一样
-
他们都是“双打”
-
同样的计算在完全相同的情况下在不同的工作表上工作
-
我的代码说:
Private Function INVACalc(ByVal INVAamt As Double, Holdcell As String, lastcell1 As String) As Double Dim PICKAmt As Double Dim APSDamt As Double Dim lastcell3 As String Dim SUND As String Dim APIE As String Worksheets("GL").Activate Range(lastcell1).Offset(0, 9).NumberFormat = "0.00" Range(lastcell1).Offset(0, 9).Value = Application.WorksheetFunction.Sum(Range("AL:AL")) 'add up total of all lines PICKAmt = Range(lastcell1).Offset(0, 9).Value If PICKAmt = INVAamt Then 'do stuff Else 'do something else End if
它直接进入“Else”,好像这两个金额不相同,它们是。它们没有多余的空格或字符。我可以在它们之间找到的唯一区别是 INVAAmt 单元格被格式化为“自定义”,而 PICKAmt 单元格被格式化为“数字”,但是同样的代码在其他具有相同格式的工作表上也能正常工作。我很茫然。
【问题讨论】:
-
从一个数字中减去另一个数字以查看差异。不要依赖格式化的值。如果有区别,会去
Else。 -
我已经做到了 - 没有区别。
-
你的意思是
debug.print(PICKAmt - INVAamt)还是debug.print(INVAamt - PICKAmt)返回0? -
嗯,这很有趣......昨晚我在工作表本身而不是代码中做了减法,它变成了 0。今天早上,当我看到 shahkalpeshp 的评论时,我在代码中添加了这一行并再次运行它,期望它是纯 0。我得到的是:-1.13686837721616E-13....我没想到
-
关于如何绕过它的任何建议?
标签: excel vba if-statement trailing