Ошибка несоответствия типов в условии цикла - PullRequest
0 голосов
/ 07 ноября 2019

Я получаю:

ошибка времени выполнения 13, несоответствие типов.

Dim H As Long
H = Cells(Rows.Count, 7).End(xlUp).Row
For i = 2 To H
   If ((Cells(i, 5).Value) = "NA" Or (Cells(i, 5).Value = "#NA")) Then
       Cells(i, 5).Value = ""
   End If
Next i

1 Ответ

4 голосов
/ 07 ноября 2019

Значения ошибок не являются текстовыми. Сравнение их с text с чем-либо отличным от Variant/Error приведет к ошибке несоответствия типов.

Используйте IsError(Cells(...).Value) для обработки ячеек с ошибками. Вы также можете использовать WorksheetFunction.IsNA.

. В этом текущем случае вы также можете использовать Range.SpecialCells(xlCellTypeFormulas, xlErrors) вместо цикла.

Sub Test()
    Dim rng As Range

    On Error Resume Next
    Set rng = Columns("H").SpecialCells(xlCellTypeFormulas, xlErrors)
    On Error GoTo 0

    If Not rng Is Nothing Then
        rng.Value = ""
    End If
End Sub

Примечание. Рекомендуется указыватьРабочая тетрадь и рабочий лист для любых вызовов Range, Rows или Columns (среди прочих).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...