簡體   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