繁体   English   中英

Excel VBA:在循环中选择不同的范围

[英]Excel VBA: Selecting Different Ranges in Loop

我试图在循环中选择两个不同的范围(即第一次迭代选择一个范围,第二次迭代选择另一个范围)。 这是我的尝试,看看我是否可以做一个简单的任务,如一个接一个地选择两个范围:

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'的方法'单元'失败”

我之前尝试过:

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(#,#)...”形成来避免这种情况。但现在我只是卡住了。

这可能吗?

很可能你得到了对象'_Global'失败'的“方法'单元'错误,因为你的Cells()方法没有附加到对象上。 根据这篇文章( 方法'范围'对象'_Global'失败。错误 ),您可以通过使用“activeSheet”来避免这种情况。

Sub SelectingTwoRanges2()
    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
        With ActiveSheet
            .Range(.Cells(m, 1), .Cells(n, 2)).Select
        End With
    Next i
End Sub

至于你的其他例子; 你完全正确。 在字符串中包含变量名称根本不引用变量。 您可以使用以下格式来连接字符串(VBA将自动尝试将变量值转换为串联中的字符串)

Range("A" & m & ":B" & n).Select 

我个人喜欢使用CStr()来确保VBA将值转换为字符串

Range("A" & CStr(m) & ":B" & CStr(n)).Select

第一个例子对我有用,但尝试:

 activesheet.Range(activesheet.Cells(m, 1), activesheet.Cells(n, 2)).Select

这将完全限定Cells()范围参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM