Ошибка переменной диапазона в Excel VBA; «Переменная объекта или переменная блока не установлена» - PullRequest
1 голос
/ 18 июня 2019

Я не знаю, почему я получаю сообщение об ошибке при попытке запустить этот код.Ошибка возникает после появления MsgBox, но после нажатия «debug» в окне ошибки строка Msgbox подсвечивается.Я подозреваю, что есть проблема с переменными диапазона First и Last.

Я проверил, что переменные ws и Criteria действительны, и закомментировал оставшуюся часть функции, чтобы найти проблему.Я использовал этот код ранее, и у меня не было проблем с ним, поэтому я не знаю, что изменилось.

Function TotalUniqueValues(ws As Worksheet, Criteria As String) As Integer
    Dim Last As Range, First As Range, rng As Range

    Set Last = ws.Cells.Find(What:=Criteria, _
        After:=Range("B1"), _
        LookAt:=xlPart, _
        LookIn:=xlValues, _
        SearchOrder:=xlByRows, _
        SearchDirection:=xlPrevious, _
        MatchCase:=False)

    Set First = ws.Cells.Find(What:=Criteria, _
        After:=Range("B1"), _
        LookAt:=xlPart, _
        LookIn:=xlValues, _
        SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, _
        MatchCase:=False)

    MsgBox Last.Address

    Set rng = Range(First, Last)
End Function

1 Ответ

0 голосов
/ 18 июня 2019

Вероятно, последний объект никогда не был установлен. Вы можете проверить это, поместив эту строку перед MsgBox Last.Address

if Last is Nothing then stop
...