I\'m trying to selecting multiple dynamic range. Trying to use the union method and I\'m getting Method \'Range\' of \'object\' Global Failed error on first Set line.
<The problem occurs because of the comma in you range statements. I.e. when you set R1
you should write:
Set R1 = Range("A7:A" & LR)
Also, when you define the object type of your variables R1
, ..., R5
you should write it as
Dim R1 As Range, R2 As Range, R3 As Range, R4 As Range, R5 As Range, MultiRange As Range
Otherwise R1
, ..., R5
will be defined as a Variant. This doesn't cause a problem, but it will save memory and makes for a cleaner code.
You can also set it like this:
Set R1 = Range("A7","A" & LR)
What you did is you kinda mixed up the Range syntax.
See below some common Range Syntax:
Using :
to define Range
:
Range("A1:A" & LR) '~~> where LR holds the last row number
Using ,
to define Range
:
Range("A1","A" & LR)
Using Cells
property:
Range(Cells(1, "A"),Cells(LR, "A"))
Range(Cells(1, 1),Cells(LR, 1)) '~~> another way
Using Range
property:
Range(Range("A1"),Range("A" & LR))
Range(Range("A1").address & ":" & Range("A" & LR).Address) '~~> yet another complicated way
All syntax above evaluates to: $A$1:$A$(LR)
Each have certain advantages and uses.
Use the syntax you're most comfortable with.
Additional:
This one uses Intersect Function
:
Set R1 = Intersect(Columns("A:A"),Rows("1:" & LR))