Ошибка времени выполнения '1004': ошибка приложения или объекта - PullRequest
0 голосов
/ 19 июня 2020

Это код, который я пытаюсь запустить:

Sub test()

    Dim rng As Range
    Dim iCounter As Long

    For Each rng In Worksheets(1).Range("D2", Range("D" & Rows.Count).End(xlUp))
        If rng.Value <> "" Then
            Worksheets(2).Range("D1").Offset(iCounter, 0) = rng.Value
            iCounter = iCounter + 1
        End If
    Next rng

End Sub

По какой-то причине, если мой активный лист - лист 2, я получаю сообщение об ошибке: Ошибка времени выполнения «1004»: Приложение Определенная или определяемая объектом ошибка, при этом выделена строка For Each rng In Worksheets(1).Range("D2", Range("D" & Rows.Count).End(xlUp)). Если я добавлю Worksheets(1).Select перед For-Each l oop, я не получу эту ошибку, и код будет работать отлично. Я не понимаю, почему я должен явно выбирать рабочий лист, чтобы l oop проходил через диапазон ячеек, учитывая, что я уже указал, на каком листе находится диапазон ячеек, через которые будет проходить цикл. Кроме того, я поискал ошибку и заметил, что у некоторых возникает аналогичная проблема, если их код находится не в разделе модуля, но мой код действительно находится в разделе модуля. Кто-нибудь знает, почему возникает эта ошибка? Спасибо и ценим любой совет!

1 Ответ

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

Вы неправильно квалифицировали первый диапазон, попробуйте:

Worksheets(1).Range("D2", Worksheets(1).Range("D" & Rows.Count).End(xlUp))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...