Несоответствие типов при проверке значения ячейки - PullRequest
1 голос
/ 29 февраля 2020

У меня есть этот код:

ошибка 13: Несоответствие типов

всякий раз, когда я вводю или изменяю значение в C59, C59 содержит эту формулу =ROUNDUP(D59/C57,0). Я предполагаю, что это из-за другой переменной, но не знаю, как ее решить, любая помощь очень ценится!

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

1 Ответ

0 голосов
/ 29 февраля 2020

Вы хотите убедиться, что 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...