Диапазон настройки на другом листе, основанный на абстрактном номере строки - PullRequest
1 голос
/ 20 января 2020

С подпунктом на листе 1 мне нужно получить данные из диапазона ячеек (от P .. до W ..) из строки X, где X - взять из справочной ячейки на листе 2.

Dim final_range As Range
Dim ref_cell_range As Range
Dim ref_cell As Range

Set ref_cell_range = Worksheets("sheet2").Range("O9:O15")

For Each ref_cell In ref_cell_range
     Set final_range = Worksheets("sheet2").Range(Cells(ref_cell.Row, "P"), Cells(ref_cell.Row, "W"))
Next ref_cell

Этот код работает, если я пропущу «Рабочие листы (« sheet2 »)». часть, но затем он берет клетки из листа1. Если я запускаю его следующим образом (при перетаскивании листа, чтобы взять диапазон), я получаю сообщение об ошибке («Ошибка времени выполнения« 1004 »: ошибка приложения или объекта»)

Кто-нибудь знает что я могу делать не так?

1 Ответ

1 голос
/ 20 января 2020

Ваша ссылка final_range просматривает два листа.

Это выглядит на листе 2:
Worksheets("sheet2").Range(

Это выглядит на том листе, который активен, поскольку вы не указали лист для Cells для ссылки:
Cells(ref_cell.Row, "P"), Cells(ref_cell.Row, "W")

Полная строка должна быть:

Set final_range = Worksheets("sheet2").Range(Worksheets("sheet2").Cells(ref_cell.Row, "P"), Worksheets("sheet2").Cells(ref_cell.Row, "W"))  

или с использованием With...End With:

Sub Test()

    Dim final_range As Range
    Dim ref_cell_range As Range
    Dim ref_cell As Range

    With ThisWorkbook.Worksheets("sheet2")
        Set ref_cell_range = .Range("O9:O15")

        For Each ref_cell In ref_cell_range
             Set final_range = .Range(.Cells(ref_cell.Row, "P"), .Cells(ref_cell.Row, "W"))
        Next ref_cell

    End With

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