2014-02-06 279 views
3

我想選擇多個動態範圍。嘗試使用聯合方法,並得到第一個Set行的'對象'全局失敗錯誤的方法'範圍'。Excel VBA選擇多個動態範圍

Dim LR As Long 
LR = Range("A60000").End(xlUp).Row 

Dim R1, R2, R3, R4, R5, MultiRange As Range 
Set R1 = Range("A7,:A" & LR) 
Set R2 = Range("D7,:D" & LR) 
Set R3 = Range("G7,:G" & LR) 
Set R4 = Range("H7,:H" & LR) 
Set R5 = Range("J7,:J" & LR) 
Set MultiRange = Union(R1, R2, R3, R4, R5) 
MultiRange.Select 
Selection.Copy 

任何人都可以幫忙嗎?

謝謝

回答

3

由於範圍語句中逗號的問題發生。即當您設置R1你應該寫:

Set R1 = Range("A7:A" & LR) 

此外,當你定義變量的對象類型R1,...,R5你應該把它寫成

Dim R1 As Range, R2 As Range, R3 As Range, R4 As Range, R5 As Range, MultiRange As Range 

否則R1,.. 。,R5將被定義爲變體。這不會導致問題,但它會節省內存並使代碼更清晰。

+0

啊新秀的錯誤。謝謝索倫。 –

+0

加上一個適當的方式來聲明變量。 – L42

1

您還可以設置它像這樣:

Set R1 = Range("A7","A" & LR) 

你所做的是你還挺混合起來的範圍語法。
見下面一些常見的範圍語法:

使用:定義Range

Range("A1:A" & LR) '~~> where LR holds the last row number 

使用,定義Range

Range("A1","A" & LR) 

使用Cells正確TY:

Range(Cells(1, "A"),Cells(LR, "A")) 
Range(Cells(1, 1),Cells(LR, 1)) '~~> another way 

使用Range屬性:

Range(Range("A1"),Range("A" & LR)) 
Range(Range("A1").address & ":" & Range("A" & LR).Address) '~~> yet another complicated way 

所有語法上面的計算結果爲:$A$1:$A$(LR)
每個人都有一定的優勢和用途。
使用您最喜歡的語法。

附加:

這一次使用Intersect Function

Set R1 = Intersect(Columns("A:A"),Rows("1:" & LR))