Excel VBA — «Несоответствие типа ошибки ’13’ во время выполнения»

#excel #vba

#excel #vba

Вопрос:

Я относительный новичок в VBA. Я пытаюсь пометить ячейки с ключевыми словами (ColumnA) в Excel, используя список ключевых слов (ColumnC), который будет выводить флаг в ColumnE.

Вот наглядный пример набора данных: ссылка на изображение

Когда я пытаюсь запустить этот код, мне выдается сообщение об ошибке: всплывающее окно «Ошибка выполнения ’13’: несоответствие типа». При выборе debug выбранное поле — строка 17: s = Ячейки (i, «A»).Значение

Я использую этот код из другого запроса StackOverflow: https://superuser.com/questions/1228098/find-keywords-in-paragraphs-of-text-in-excel

В части «Часы» отладчика отображается следующая информация: «выражение s = ячейки (i, «A»).Значение», «Значение «, «Тип Variant / Integer».

Кто-нибудь может помочь мне найти, что мешает выполнению этого кода?

 Sub KeyWord_II_TheSequel()
    Dim Na As Long, Nc As Long, ary, s As String
    Dim r As Range, a, i As Long, outpt As String

    Na = Cells(Rows.Count, "A").End(xlUp).Row
    Nc = Cells(Rows.Count, "C").End(xlUp).Row

    ReDim ary(1 To Nc)
    i = 1
    For Each r In Range("C1:C" amp; Nc)
        ary(i) = r.Text
        ary(i) = " " amp; ary(i) amp; " "
        i = i   1
    Next r

    For i = 1 To Na
        s = Cells(i, "A").Value
        s = " " amp; s amp; " "
        outpt = ""
        For Each a In ary
            If InStr(1, s, a) > 0 Then
                outpt = outpt amp; "," amp; a
            End If
        Next a
        If outpt = "" Then
        Else
            Cells(i, "E").Value = Mid(outpt, 2)
        End If
    Next i

End Sub
 

Комментарии:

1. Вам нужно будет посмотреть, какое значение находится в ячейке. Один из простых способов сделать это — позволить вашему коду столкнуться с ошибкой, затем, находясь в режиме отладки, введите в немедленное окно: ?Cells(i, "A").Value , нажмите ввод и посмотрите, что вы получите. Или просто выясните, какая строка i включена, и посмотрите на ячейку Ai на листе. s Поскольку это строка, и вы получаете ошибку несоответствия типа, это обычно означает, что значение в ячейке является какой-то ошибкой (обычно вызванной формулой, которая вычисляется с ошибкой, подобной) #N/A

2. При отладке после ошибки наведите указатель мыши на переменную i, чтобы проверить ее значение, и наведите указатель мыши на cells(), чтобы проверить ее значение.