Несоответствие типов при проверке наличия значений на другом листе - PullRequest
1 голос
/ 20 июня 2020

Мне нужно проверить, находятся ли значения некоторых ячеек в столбце на другом листе в той же книге. Если он найден, то исходная ячейка выделяется зеленым цветом, в противном случае - красным. Вот мой код:

Option Explicit

Sub lookup()
    Dim rng As Range
    Dim i As Integer
    
    Sheets("Zach Spares").Select
    
    For i = 8 To 1035

    ' the next line is the one that gives me the error
    Set rng = Sheets("SAP Spares").Range("G5:G6446").Find(Cells(i, 6).Value)
    
    If Not rng Is Nothing Then
        Cells(i, 6).Interior.ColorIndex = 4
    ElseIf rng Is Nothing Then
            Cells(i, 6).Interior.ColorIndex = 3
    End If
    Next
End Sub

Я продолжаю получать

Run-time Error '13': Type Mismatch.

в строке после комментарий. Этот код работал более чем с половиной данных, теперь он больше не работает. Я потратил часы, пытаясь выяснить, как исправить несоответствие.

Я попытался добавить

If IsError(Cells(i, 6).Value) Then
        Cells(i, 6).Interior.ColorIndex = 6
        Else
    Set rng = Sheets("SAP Spares").Range("G5:G6446").Find(Cells(i, 6).Value)
    End If

, чтобы отловить любые ячейки, которые могут содержать ошибку, но я все еще получаю несоответствие того же типа . Стоит отметить, что скрипт работает для столбцов 1-5, на 6 он начинает портить, и я не знаю почему. Error message

Мой код в целом, VBA показывает неправильную часть

1 Ответ

0 голосов
/ 20 июня 2020

Как отмечено @ Domeni c в комментариях под вопросом, это может произойти, если в ячейке, к которой осуществляется доступ, есть ошибка.

Вы можете использовать функцию IsError, чтобы проверить это, чтобы код может выделить ячейки ошибки другим цветом и продолжить:

    If IsError(Cells(i, 6).Value) Then
        Cells(i, 6).Interior.ColorIndex = 6
    Else
        Set rng = Sheets("Sheet2").Range("G5:G6446").Find(Cells(i, 6).Value)

        If Not rng Is Nothing Then
            Cells(i, 6).Interior.ColorIndex = 4
        Else
            Cells(i, 6).Interior.ColorIndex = 3
        End If
    End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...