以下代码给我一个“应用程序定义或对象定义的错误”
Sub Apply_Changes()
Dim col_ref As Integer
col_ref = 5
Worksheets("Sheet1").range(Cells(10, col_ref),cells(20,col_ref)).Select
End Sub
有人可以解释吗?
还有另一种定义范围的方法吗?
答案 0 :(得分:3)
您必须对Cells()
进行限定,否则您将说“当前处于活动状态的任何工作表中的单元格”,这在Worksheeets("Sheet1").Range()
内部是没有意义的
Worksheets("Sheet1").range(Worksheets("Sheet1").Cells(10, col_ref),Worksheets("Sheet1").cells(20,col_ref)).Select
考虑,而不要这样做:
Worksheets("Sheet1").Cells(10, col_ref).Resize(10).Select
本质上将单个单元格的大小调整为另外10行(减少到20)。
答案 1 :(得分:3)
您需要将对角线应用于Range内的Cells()。
Worksheets("Sheet1").range(Worksheets("Sheet1").Cells(10, col_ref),Worksheets("Sheet1").cells(20,col_ref)).Select
或使用with来缩短:
With Worksheets("Sheet1")
.range(.Cells(10, col_ref),.cells(20,col_ref)).Select
End with
请注意,我认为这是为了练习,选择一个范围来做某事是浪费能量,只是对范围做自己想做的事情。
With Worksheets("Sheet1")
.range(.Cells(10, col_ref),.cells(20,col_ref)).copy Worksheets("Sheet2").Range("A1")
End with
如果要实际选择范围,则该工作表必须处于活动状态:
With Worksheets("Sheet1")
.Activate
.range(.Cells(10, col_ref),.cells(20,col_ref)).Select
End with