Range(S) is a valid expression when S = "x,y".

  • Thread starter Thread starter Jim Luedke
  • Start date Start date
J

Jim Luedke

Thought I'd share something I discovered:

Let's say string S = "MyCell1", and MyCell1 is a valid range name.

Then of course, expression Range(S) returns the range.

Next, let's say string T = "MyCell2", and ditto.

Then, Range(S,T) returns a range comprising the two individual ranges.

Now, let's say string U = "S,T".

Then, expression Range(U) is equivalent to Range(S,T). Namely, it
returns the range comprising MyCell1 and MyCell2.

That seems kind of amazing.

For a param to "resolve into" into "secondary" or "inline" params
strikes me, offhand, as the kind of capability you occasionally find
in a scripting language that you can't get in a compiled language.

***
 
See inline comments...
Let's say string S = "MyCell1", and MyCell1 is a valid range name.

Then of course, expression Range(S) returns the range.

Next, let's say string T = "MyCell2", and ditto.

Then, Range(S,T) returns a range comprising the two individual ranges.

This is not true. Say that MyCell1 referred to A1 and MyCell2 referred to
D4, then Range(S, T) would be A1:D4 (print out its address to see this)...
A1:D4 is *not* a range comprised of the two cells making up MyCell1 and
MyCell2.
Now, let's say string U = "S,T".

Then, expression Range(U) is equivalent to Range(S,T). Namely, it
returns the range comprising MyCell1 and MyCell2.

When I assign "S,T" to U and then try to print out Range(U).Address, I get
an error generated. Did you perhaps mean to write this?

U = S & "," & T

If so, the Range(U) would be equal to A1,D4 which is the two individual
cells assigned to MyCell1 and MyCell2, but this is not the same as
Range(S,T) which, as we saw above, was all the cells including and between
A1 and D4.
 
Rick:

Thanks very much for reply.

You are clearly right, and I am clearly wrong, on both counts.

On the first, I did not in fact check to see exactly what the extent
of the range returned by the expression was.

On the second, I took my zeal over indirectness one level too far. I
should have said:

If S = "MyCell1,MyCell2", where "MyCell1" and "MyCell2" are legit
range names, then the expression Range(S) returns a real range (which
I just tested & it works).

Which, as I said, to a quasi-newbie like myself, seems kinda amazing.

Thanks much again.

***
 
If U = "MyCell1,MyCell2", where "MyCell1" and "MyCell2"
are legit range names, then the expression Range(U)
returns a real range (which I just tested & it works).

First off, note that I changed your S variable back to the U variable so as
to match your initial setup. I did this because I wanted to draw your
attention to the fact that with this...

S = "MyCell1"
T = "MyCell2"

when I asked you if you had meant to write this...

U = S & "," & T

I did that because that would make...

U = "MyCell1,MyCell2"

which is what you referred to in your quoted text at the top of this reply.
 
Back
Top