使用变量选择范围

时间:2018-10-24 14:29:12

标签: vba

以下代码给我一个“应用程序定义或对象定义的错误”

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

有人可以解释吗?

还有另一种定义范围的方法吗?

2 个答案:

答案 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