«Недопустимый вызов процедуры или аргумент» при использовании Application.Match в функции VBA - PullRequest
0 голосов
/ 14 марта 2020

Это моя функция:

Function stageValueVariance(stage As String, valCol As Long)
    For i = 2 To offlineHeight
        If Application.VLookup(offline.ListColumns(1).Range(i).value, bce.DataBodyRange, valCol, 0) <> offline.ListColumns(valCol).Range(i).value Then
            foundID = Application.WorksheetFunction.Match(offline.ListColumns(1).Range(i), oldOut.ListColumns(1).DataBodyRange, 0)
            If foundID = 0 Then
                foundID = Application.WorksheetFunction.Match(offline.ListColumns(1).Range(i), valComp.ListColumns(1).DataBodyRange, 0)
            End If
            If foundID = 0 Then
                With stageValComp.ListRows.Add
                    .Range(1) = offline.ListColumns(1).Range(i)
                    .Range(2) = offline.ListColumns(2).Range(i)
                    .Range(3) = stage
                    .Range(4) = offline.ListColumns(7).Range(i)
                    .Range(5) = Application.VLookup(offline.ListColumns(1).Range(i).value, bce.DataBodyRange, valCol, 0)
                    .Range(6).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="Yes, No"
                End With
            End If
            foundID = 0
        End If
    Next i
End Function

Я получаю сообщение об ошибке «Недопустимый вызов процедуры или аргумент» в этой строке:

foundID = Application.WorksheetFunction.Match(offline.ListColumns(1).Range(i), oldOut.ListColumns(1).DataBodyRange, 0)

Если это полезно, эта строка Код проверяет, что ID еще не существует в другой таблице, поэтому offline и oldOut объявлены как ListObjects в верхней части модуля.

Я никогда раньше не сталкивался с этой ошибкой, и не могу найти много информации в Интернете. Есть идеи?

1 Ответ

1 голос
/ 14 марта 2020

Возможно, вы обнаружите, что DataBodyRange в oldOut.ListColumns(1).DataBodyRange не существует.

Если при тестировании oldOut.ListColumns(1).DataBodyRange.Address возвращается объект, не установленный, то это определенно проблема.

Единственный способ воспроизвести вашу ошибку - это удалить DataBodyRange или удалить таблицу. В противном случае код работает нормально.

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