簡體   English   中英

Excel VBA 選擇多個動態范圍

[英]Excel VBA selecting multiple dynamic ranges

我正在嘗試選擇多個動態范圍。 嘗試使用聯合方法,我在第一行設置“對象”全局失敗錯誤的方法“范圍”。

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

出現問題的原因是范圍語句中的逗號。 即當你設置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將被定義為 Variant。 這不會導致問題,但會節省內存並使代碼更清晰。

你也可以這樣設置:

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

你所做的是你有點混淆了 Range 語法。
請參閱下面的一些常見范圍語法:

使用:來定義Range

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

使用,定義Range

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

使用Cells屬性:

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM