Home » excel » excel – Set Range doesn't work with Cells() inside

excel – Set Range doesn't work with Cells() inside

Posted by: admin May 14, 2020 Leave a comment

Questions:

I am writing a code in which I set those two ranges:

Set ColorSAP = SAP_Comparison.Range("C3:AG19")
Set ColorPlan = Production_Plan.Worksheets("Schedule").Range(Cells(4, 
MonthS), Cells(20, (MonthE - 1)))

MonthS and MonthE are integers.

Production_plan is a workbook.

SAP_Comparison is a workbook.

I have no idea why I get a error for the second but not for the first since they are very similar.
I have even tested easier cases and this kind of usage do work.

Error: Run-Time '1004'
Application-defined or object-defined error.

How can I solve this?

How to&Answers:

Unqualified Cells refers to the ActiveSheet, which will raise an error if that’s not “Schedule”

You need something like

With Production_Plan.Worksheets("Schedule")
    Set ColorPlan = .Range(.Cells(4, MonthS), .Cells(20, (MonthE - 1)))
End With

or

Dim sht As Worksheet

Set sht = Production_Plan.Worksheets("Schedule")
Set ColorPlan = sht.Range(sht.Cells(4, MonthS), sht.Cells(20, (MonthE - 1)))

What is the default scope of worksheets and cells and range?

Answer:

You could use Cells to get address out of and feed Range with:

Set ColorPlan = Production_Plan.Worksheets("Schedule").Range(Cells(4, MonthS).Address & “:” & Cells(20, (MonthE - 1)).Address)

This way you only have one “true” Range object and it’s completely qualified