设置范围不适用于内部的Cells()

时间:2018-11-06 19:10:51

标签: excel vba excel-vba

我正在编写一个设置这两个范围的代码:

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

MonthSMonthE是整数。

Production_plan是一个工作簿。

SAP_Comparison是一个工作簿。

我不知道为什么我第二次却出现错误,但第一次却没有,因为它们非常相似。 我什至测试了更简单的情况,这种用法确实有效。

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

我该如何解决?

2 个答案:

答案 0 :(得分:2)

不合格的单元格引用ActiveSheet,如果不是“时间表”,则会引发错误。

您需要类似的东西

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

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?

答案 1 :(得分:0)

您可以使用Cells来获取地址,并通过以下方式向Range馈送:

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

这样,您只有一个“ true” Range对象并且完全合格