[英]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.