Прошу прощения, я понимаю, что об этом, возможно, уже спрашивали тысячу раз, но я пытался искать и не могу найти ситуацию, подобную моей. Я все еще учусь, и я никогда раньше не писал здесь, поэтому, пожалуйста, будьте нежны со мной.
Я работаю в 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
Он идет прямо к Иному, как будто две суммы не идентичны, а они есть. В них нет лишних пробелов или символов. Единственная разница, которую я могу уловить между ними, заключается в том, что ячейка INVAAmt отформатирована как Custom, а ячейка PICKAmt отформатирована как Number, но опять же, этот же код прекрасно работает на других листах с таким же форматированием. Я в недоумении.
Else
. - person shahkalpeshp   schedule 21.07.2021debug.print(PICKAmt - INVAamt)
илиdebug.print(INVAamt - PICKAmt)
возвращает 0? - person shahkalpeshp   schedule 21.07.2021If Format(PICKAmt,"0.00") = Format(INVAamt,"0.00") then
, либоIf Abs(PICKAmt-INVAAmt) < 0.001
тогда - person CDP1802   schedule 22.07.2021