运行时错误1004,对象_worksheet的方法范围失败。在 VBA 中定义范围

问题描述 投票:0回答:1

我正在 VBA 中定义一些列范围,以便稍后可以轻松使用范围的名称,而不是每次都定义。 我的工作簿中有多个工作表,这就是我定义工作表的原因。 我收到“运行时错误 1004:对象 _worksheet 的方法范围失败,并且调试突出显示了这一行:

Set PlateIDRng = Master.Range("A2", Range("A2").End(xlDown))

这是整个代码:

Sub defineRanges()

Dim WB As Workbook
Dim Master As Worksheet

Set WB = ThisWorkbook
Set Master = Worksheets("All_Plates_Mastersheet")

Dim PlateIDRng As Range
Dim ClientRng As Range
Dim ProjIDRng As Range
Dim PriorityRng As Range
Dim LimsStepRng As Range
Dim NumSamplesRng As Range
Dim LenNumRng As Range
Dim PhysLocRng As Range
Dim DateRecRng As Range

Set PlateIDRng = Master.Range("A2", Range("A2").End(xlDown))
Set ClientRng = Master.Range("B2", Range("B2").End(xlDown))
Set ProjIDRng = Master.Range("C2", Range("C2").End(xlDown))
Set PriorityRng = Master.Range("D2", Range("D2").End(xlDown))
Set LimsStepRng = Master.Range("E2", Range("E2").End(xlDown))
Set NumSamplesRng = Master.Range("F2", Range("F2").End(xlDown))
Set LenNumRng = Master.Range("G2", Range("G2").End(xlDown))
Set PhysLocRng = Master.Range("H2", Range("H2").End(xlDown))
Set DateRecRng = Master.Range("I2", Range("I2").End(xlDown))

End Sub

我尝试用几种不同的方式构建“最后一行”,但得到了相同的错误。

excel vba runtime-error worksheet named-ranges
1个回答
0
投票

仅当您在

Master
不是活动工作表时运行代码时,才会出现该错误。原因是
Range("A2").End(xlDown)
不符合工作表,因此它引用您活动的任何工作表上的范围。如果您在该代码块之前激活
Master
,它应该可以工作。但正确的结构是

Set PlateIDRng = Range(Master.Range("A2"), Master.Range("A2").End(xlDown))

更简洁的格式是(注意

.
前面的
.Range

With Master
    Set PlateIDRng = Range(.Range("A2"), .Range("A2").End(xlDown))
End With
© www.soinside.com 2019 - 2024. All rights reserved.