Ваша ссылка 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