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