我正在 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
我尝试用几种不同的方式构建“最后一行”,但得到了相同的错误。
仅当您在
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