VBA:工作表对象出错

VBA:工作表对象出错,vba,excel,Vba,Excel,我有一行代码设置范围的参考: 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) 这是正确的。但是,我想将此参考设置为特定图纸、图纸2或“销售”上的范围。添加工作表对象时会出现错误,如下所示 Set rCheck = Worksheets

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

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)
这是正确的。但是,我想将此参考设置为特定图纸、图纸2或“销售”上的范围。添加工作表对象时会出现错误,如下所示

Set rCheck = Worksheets("Sales").Range(Cells(lRow, 1), Cells(lRow, 3)).End(xlDown)
运行时错误“1004”: 应用程序定义或对象定义错误

运行时错误“13”: 类型不匹配


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

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)

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

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)

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

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)

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

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)

我认为进行一些重组,你就会有一个解决方案。实际上,您希望使用“销售”作为工作表来执行操作,因此我认为最好使用
这样的语句:

With Worksheets("Sales")
   Set rCheck = .Range(.Cells(lRow, 1), .Cells(lRow, 3)).End(xlDown)
End With
请注意,我们使用的
.Cells
前面有一个句点。也就是说,我们希望
单元格
在With语句中使用的工作表上进行操作。更多信息,请访问:

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

但是,如果您希望使用当前活动工作表中的单元格并访问工作表
Sales
,则可以执行以下操作:

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

我认为进行一点重组,你就会有一个解决方案。实际上,您希望使用“销售”作为工作表来执行操作,因此我认为最好使用
这样的语句:

With Worksheets("Sales")
   Set rCheck = .Range(.Cells(lRow, 1), .Cells(lRow, 3)).End(xlDown)
End With
请注意,我们使用的
.Cells
前面有一个句点。也就是说,我们希望
单元格
在With语句中使用的工作表上进行操作。更多信息,请访问:

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

但是,如果您希望使用当前活动工作表中的单元格并访问工作表
Sales
,则可以执行以下操作:

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

我认为进行一点重组,你就会有一个解决方案。实际上,您希望使用“销售”作为工作表来执行操作,因此我认为最好使用
这样的语句:

With Worksheets("Sales")
   Set rCheck = .Range(.Cells(lRow, 1), .Cells(lRow, 3)).End(xlDown)
End With
请注意,我们使用的
.Cells
前面有一个句点。也就是说,我们希望
单元格
在With语句中使用的工作表上进行操作。更多信息,请访问:

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

但是,如果您希望使用当前活动工作表中的单元格并访问工作表
Sales
,则可以执行以下操作:

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

我认为进行一点重组,你就会有一个解决方案。实际上,您希望使用“销售”作为工作表来执行操作,因此我认为最好使用
这样的语句:

With Worksheets("Sales")
   Set rCheck = .Range(.Cells(lRow, 1), .Cells(lRow, 3)).End(xlDown)
End With
请注意,我们使用的
.Cells
前面有一个句点。也就是说,我们希望
单元格
在With语句中使用的工作表上进行操作。更多信息,请访问:

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

但是,如果您希望使用当前活动工作表中的单元格并访问工作表
Sales
,则可以执行以下操作:

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

我编辑了你的答案。你说你有
.Cells
,但我没有看到,所以我添加了:)。不过,请随意重新编辑。事实上,我是在你做这件事的同时做的。同时,我添加了OP正在寻找的另一种可能性(并且在第一个版本中看到了我的错误)-谢谢。我编辑了你的答案。你说你有
.Cells
,但我没有看到,所以我添加了:)。不过,请随意重新编辑。事实上,我是在你做这件事的同时做的。同时,我添加了OP正在寻找的另一种可能性(并且在第一个版本中看到了我的错误)-谢谢。我编辑了你的答案。你说你有
.Cells
,但我没有看到,所以我添加了:)。不过,请随意重新编辑。事实上,我是在你做这件事的同时做的。同时,我添加了OP正在寻找的另一种可能性(并且在第一个版本中看到了我的错误)-谢谢。我编辑了你的答案。你说你有
.Cells
,但我没有看到,所以我添加了:)。不过,请随意重新编辑。事实上,我是在你做这件事的同时做的。同时,我还添加了另一种可能性,OP正在寻找f