Объект, необходимый для каждой петли, проходящей через диапазон - PullRequest
1 голос
/ 27 сентября 2019

Итак, я пытаюсь получить адрес ячейки выбранных ячеек на основе цикла For Each.

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False

    Dim company As String
    company = Range("H12").Value

    Dim companyRange, cell As Range
    companyRange = ThisWorkbook.Sheets("Bleh List").Range("A2:A20")

    For Each cell In companyRange
        If cell.Value <> vbNullString And cell.Value = company Then
                Debug.Print "C : " & cell.Row
        End If
    Next cell
    Application.EnableEvents = True
End Sub

Однако каждый раз, когда я пытаюсь выполнить это, мне возвращается ошибка Object requiredпервая строка цикла.

Что должно было быть настолько тривиальным, так это создать проблему> почему?

Спасибо!

1 Ответ

3 голосов
/ 27 сентября 2019

Это распространенное заблуждение:

Dim companyRange, cell As Range

Только cell - это Range.companyRange - это Variant.Вам нужно:

Dim companyRange as Range, cell as Range

Тогда вам не хватает Set.

Set companyRange = ThisWorkbook.Sheets("Bleh List").Range("A2:A20")

В настоящее время companyRange = ThisWorkbook.Sheets("Bleh List").Range("A2:A20") - это двумерный массив вариантов, а не объект Range, который выожидаем перебора.

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