Ошибка типа пустых ячеек, исправление ошибок при очистке ячеек - PullRequest
0 голосов
/ 27 июня 2019

У меня есть следующий код, который проверяет, содержит ли ячейка L определенную строку, а если нет, то проверяет, является ли H If InStr(Cells(count, "L"), "Apples") > 0 Then 'stuff ElseIf CDbl(Cells(count, "H")) < CDbl(Cells(count, "I")) Then 'stuff Else 'stuff End If Проблема, с которой я сталкиваюсь, заключается в том, что если Apples не найден и ячейка I # пуста, то Type Mismatch происходит на CDbl(Cells(count, "I")).Тем не менее, я обнаружил, что если я захожу и очищаю содержимое этой ячейки, все работает хорошо.Но я не имею ни малейшего представления о том, почему это решает проблему, поскольку, насколько я могу судить, ее очистка фактически не меняет ячейку или ее содержимое каким-либо образом.

Я подтвердил, чтоперед очисткой ячейка полностью пуста (без пробелов, ничего), а также отформатирована так же, как и после ее очистки (текст).На данный момент я добавил следующее, чтобы очистить все ячейки перед выполнением вышеуказанных проверок, и это предотвращает возникновение ошибок.

If Cells(count, "I") = "" Then
    Cells(count, "I").Clear
End If

1 Ответ

1 голос
/ 27 июня 2019

Если CDbl() ведет себя плохо, рассмотрите возможность использования своего UDF, например:

Public Function cdblx(v As Variant) As Double
    If IsNumeric(v) Then
        cdblx = CDbl(v)
    Else
        cdblx = 0
    End If
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...