VBA:与工作表对象的错误

我有一行代码设置范围的参考:

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”:types不匹配

我想有点重组,你会有一个解决scheme。 你有效地想要使用“销售”作为工作表来采取行动,所以我认为这是更好的使用这样的With语句:

 With Worksheets("Sales") Set rCheck = .Range(.Cells(lRow, 1), .Cells(lRow, 3)).End(xlDown) End With 

请注意,我们在前面使用.Cells 。 这就是说,我们希望Cells在我们的With语句中使用的工作表上进行操作。 更多信息可以在文档中find:

请注意,Cells属性每次出现前的时间段。 如果将前面的With语句的结果应用于Cells属性(在这种情况下,指示单元格在工作表1上(没有句点,Cells属性将返回活动工作表上的单元格) 。

但是,如果您想使用当前活动工作表中的单元格并访问Sheet Sales则可以这样做:

 With Worksheets("Sales") Set rCheck = .Range(Cells(lRow, 1), Cells(lRow, 3)).End(xlDown) End With 

首先,除非“销售”是当前活动工作表,否则此行将不起作用:

 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)