【发布时间】:2014-06-27 00:40:10
【问题描述】:
我试图在一个循环中选择两个不同的范围(即第一次迭代选择一个范围,第二次迭代选择另一个范围)。这是我的尝试,看看我是否可以做一个简单的任务,比如一个接一个地选择两个范围:
Sub SelectingTwoRanges()
Dim i As Integer
Dim m As Integer
Dim n As Integer
For i = 1 To 2
m = i * 50 - 48
n = i * 50 + 1
Range(Cells(m, 1), Cells(n, 2)).Select
Next i
End Sub
这给出了错误:“对象'_Global'的方法'Cells'失败”
我之前试过这样:
Sub SelectingTwoRanges()
Dim i As Integer
Dim m As Integer
Dim n As Integer
For i = 1 To 2
m = i * 50 - 48
n = i * 50 + 1
Range("Am:Bn").Select
Next i
End Sub
或者:
Sub SelectingTwoRanges()
Dim i As Integer
Dim m As Integer
Dim n As Integer
For i = 1 To 2
m = i * 50 - 48
n = i * 50 + 1
Range("A$n:B:m").Select
Next i
End Sub
以上都没有奏效。我认为我的问题是在字符串中使用循环相关变量(我试图通过在“Range()”中使用“Cells(#,#)......”形成来避免这种情况。但现在我只是卡住了。
这可能吗?
【问题讨论】:
-
提供的示例确实可以正常工作,是否有任何其他代码可能会干扰它?对于您的第二个示例,代码应类似于
Range("A" & m & ":B" & n).Select,这应该也可以。 -
你的第一个样本对我来说非常适合。
-
尝试使用工作表名称和/或工作表编号完全限定您的范围引用。
-
第二个和第三个例子在范围地址中使用了错误的引号。他们应该像
Range("A" & n & ":B" & m).Select. -
你在使用合并单元格吗?或锁定的工作表/单元格,?还是隐藏? (不能选择那些...)