我有一行代码来设置范围的引用:
Dim rCheck As Range
Dim lRow As Long
lRow = Worksheets("Sales").Range("salesHeader").Row + 1
Set rCheck = Range(Cells(lRow, 1), Cells(lRow, 3)).End(xlDown)
这没有错误。但是,我想为特定工作表Sheet2或“Sales”上的范围设置此引用。当我添加工作表对象时,我会收到错误,如下所示。
Set rCheck = Worksheets("Sales").Range(Cells(lRow, 1), Cells(lRow, 3)).End(xlDown)
运行时错误'1004': 应用程序定义或对象定义的错误
Set rCheck = Worksheets(Sheet2).Range(Cells(lRow, 1), Cells(lRow, 3)).End(xlDown)
运行时错误'13': 类型不匹配
答案 0 :(得分:2)
我认为有点重组,你会有一个解决方案。您实际上希望使用“Sales”作为WorkSheet来执行操作,因此我认为使用With
这样的语句可以做得更好:
With Worksheets("Sales")
Set rCheck = .Range(.Cells(lRow, 1), .Cells(lRow, 3)).End(xlDown)
End With
请注意,我们使用前面有句号的.Cells
。这就是说我们希望Cells
在我们在With语句中使用的工作表上运行。有关详情,请参阅documentation:
请注意每次出现Cells属性前的时间段。如果要将前一个With语句的结果应用于Cells属性,则需要该句点 - 在这种情况下,为了指示单元格位于工作表1上(没有句点,Cells属性将返回活动工作表上的单元格)
如果您想使用当前活动工作表中的单元格并访问工作表Sales
,那么您可以这样做:
With Worksheets("Sales")
Set rCheck = .Range(Cells(lRow, 1), Cells(lRow, 3)).End(xlDown)
End With
答案 1 :(得分:1)
首先,这条线不会起作用,除非"销售"是当前的活动表:
Worksheets("Sales").Range(Cells(lRow, 1), Cells(lRow, 3)).End(xlDown)
你可以尝试
Worksheets("Sales").Range(Cells(lRow, 1).Address, Cells(lRow, 3).Address).End(xlDown)
其次,您无法使用工作表(Sheet2)引用Sheet2。您应该使用工作表(" Sheet2")或工作表(2)