Ошибка времени выполнения «13» Несоответствие типов при просмотре диапазона ячеек - PullRequest
0 голосов
/ 01 октября 2018

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

Операции флотов начинаются с 01RN92, 01RN94, 01RR и 01RB.Другие предназначены для розничных клиентов.

Часть кода, которая выдает ошибку, - это цикл if в этой части кода:

Dim celda As Object
Dim rng As Range
Set rng = Range("B2:B200")

For Each celda In rng
    valor = celda.Value
    If valor Like "01RN92*" Or valor Like "01RN94*" Or valor Like "01RB*" Or valor Like "01RR*" Then
        celda.Interior.Color = 65535
    Else
        celda.EntireRow.Delete
    End If
Next celda

Мне нужна помощь.Что мне здесь не хватает и как я могу это решить?

Большое спасибо.С уважением.

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

Хорошо, проблема была в том, что некоторые ячейки были # N / A, потому что в первой части макроса есть некоторые формулы.

Спасибо большое, я буду продолжать улучшать макросчтобы избежать этих # N / A и заставить его работать отлично.

0 голосов
/ 01 октября 2018

Ошибки формул в значениях столбца B могут вызвать эту проблему.Следующая доработка пропустит их:

Dim rng As Range
Set rng = Range("B2:B200")

For y = rng.Cells.Count To 1 Step -1
    With rng.Cells(y)
    valor = .Value
    If Not (IsError(valor)) Then
        If valor Like "01RN92*" Or valor Like "01RN94*" Or valor Like "01RB*" Or valor Like "01RR*" Then
            .Interior.Color = VBYellow
        Else
            .EntireRow.Delete
        End If
    End If
    End With
Next

Примечание. Рекомендуется удалять снизу вверх, а не сверху вниз, чтобы быть уверенным, что вы удаляете все строки, которые должны быть.

0 голосов
/ 01 октября 2018

Добро пожаловать в Stackoverflow.Скорее всего, вы получаете эту ошибку, потому что в одной из ячеек есть ошибка формулы.

Вот простой способ воспроизвести ее и определить ячейку виновника.

Sub Sample()
    Dim ws As Worksheet
    Dim celda As Range, rng As Range
    Dim CellAddress As String

    On Error GoTo Whoa

    '~~> Change this to the relevant sheet
    Set ws = Sheet1

    With ws
        Set rng = .Range("B2:B200")

        For Each celda In rng
            valor = celda.Value
            If valor Like "01RN92*" Or valor Like "01RN94*" Or valor Like "01RB*" Or valor Like "01RR*" Then
                celda.Interior.Color = 65535
            Else
                celda.EntireRow.Delete
            End If
        Next celda
    End With

    Exit Sub
Whoa:
    If Not celda Is Nothing Then
        MsgBox Err.Description, vbInformation, "Check Cell " & celda.Address
    Else
        MsgBox Err.Description, vbInformation
    End If
End Sub

enter image description here

Как упоминалось в комментариях выше, выполните пошаговый код и проверьте, для какой ячейки вы получаете эту ошибку.Затем физически проверьте эту ячейку и посмотрите, есть ли какая-либо ошибка формулы, например "# N / A" "# DIV / 0!"

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