Вы хотите убедиться, что C57
не является 0
, поскольку вы делите его, в этом случае C59
будет #DIV/0!
(ошибка)
Вы не можете проверить .Value
свойство ячейки, если оно содержит ошибку.
Сначала проверьте ячейку C59
на наличие ошибки:
If IsError(Worksheets("InvPL").Range("C59")) Then
Msgbox "C59 contains an error. If C57=0 then it is a divide by zero error."
Else
If Range("C59").Value = "0" Then
Sheets("InvPL").Rows("78:79").EntireRow.Hidden = True
Else
Sheets("InvPL").Rows("78:79").EntireRow.Hidden = False
End If
End If
Или более чистую версию, используя блок With
, и используя Worksheets
вместо Sheets
, поскольку листы также могут ссылаться на объекты диаграммы:
With Worksheets("InvPL")
If IsError(.Range("C59")) Then
Msgbox "C59 contains an error. If C57=0 then it is a divide by zero error."
Else
If .Range("C59").Value = "0" Then
.Rows("78:79").EntireRow.Hidden = True
Else
.Rows("78:79").EntireRow.Hidden = False
End If
End If
End With
Вы можете немного изменить логи c, если хотите скрыть / отменить скрытие этих строк в случай ошибки также.
Другой вариант - изменить формулу так, чтобы она возвращала ноль вместо ошибки, когда C57
равно 0
:
=IF(C57=0,0,ROUNDUP(D59/C57,0))