ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   IsArray on Variant/Object/Range returns true?? (https://www.excelbanter.com/excel-programming/305146-isarray-variant-object-range-returns-true.html)

QuantDev

IsArray on Variant/Object/Range returns true??
 
Any idea on how I can check if the variant contains an array,
considered IsArray returns true for ranges?

thanks

Jake Marx[_3_]

IsArray on Variant/Object/Range returns true??
 
Hi QuantDev,

QuantDev wrote:
Any idea on how I can check if the variant contains an array,
considered IsArray returns true for ranges?


If the variable is truly a Variant, then it cannot contain a reference to a
Range object. When you do this:

Dim v As Variant

v = Range("A1:A10")

The variable v is being filled with the *values* from the range A1:A10. So
the IsArray function is correct - the Variant v really does contain an array
at that point.

Maybe I'm not understanding your issue - what is it you are trying to
accomplish?

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]


Stan Scott

IsArray on Variant/Object/Range returns true??
 
Function TestArray(a)
TestArray = True
On Error Resume Next
If IsError(UBound(a)) Then
TestArray = False
End If
End Function

Stan Scott
New York City

"QuantDev" wrote in message
om...
Any idea on how I can check if the variant contains an array,
considered IsArray returns true for ranges?

thanks




Tom Ogilvy

IsArray on Variant/Object/Range returns true??
 
Check for a range first

if typename(varr) is "Range" then
' it's a range
elseif isarray(varr) then
' it's an array

--
Regards,
Tom Ogilvy

"QuantDev" wrote in message
om...
Any idea on how I can check if the variant contains an array,
considered IsArray returns true for ranges?

thanks




Tom Ogilvy

IsArray on Variant/Object/Range returns true??
 
Dim v as Variant
set v = Range("A1:A10")

v will hold a range reference.

I assume he has a generalized function that is passed in a variant which may
contain a range. This would be a common need in handling a parmarray

--
Regards,
Tom Ogilvy

"Jake Marx" wrote in message
...
Hi QuantDev,

QuantDev wrote:
Any idea on how I can check if the variant contains an array,
considered IsArray returns true for ranges?


If the variable is truly a Variant, then it cannot contain a reference to

a
Range object. When you do this:

Dim v As Variant

v = Range("A1:A10")

The variable v is being filled with the *values* from the range A1:A10.

So
the IsArray function is correct - the Variant v really does contain an

array
at that point.

Maybe I'm not understanding your issue - what is it you are trying to
accomplish?

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]




Jake Marx[_3_]

IsArray on Variant/Object/Range returns true??
 
Thanks for the correction, Tom. I guess I typically use variables of type
Object to do that, so I wasn't even aware (or forgot) you could do the same
thing with a Variant.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]


Tom Ogilvy wrote:
Dim v as Variant
set v = Range("A1:A10")

v will hold a range reference.

I assume he has a generalized function that is passed in a variant
which may contain a range. This would be a common need in handling
a parmarray


"Jake Marx" wrote in message
...
Hi QuantDev,

QuantDev wrote:
Any idea on how I can check if the variant contains an array,
considered IsArray returns true for ranges?


If the variable is truly a Variant, then it cannot contain a
reference to a Range object. When you do this:

Dim v As Variant

v = Range("A1:A10")

The variable v is being filled with the *values* from the range
A1:A10. So the IsArray function is correct - the Variant v really
does contain an array at that point.

Maybe I'm not understanding your issue - what is it you are trying to
accomplish?

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]



QuantDev

IsArray on Variant/Object/Range returns true??
 
"Stan Scott" wrote in message ...
Function TestArray(a)
TestArray = True
On Error Resume Next
If IsError(UBound(a)) Then
TestArray = False
End If
End Function


I suppose it would return false for 0 dimensioned arrays.

QuantDev

IsArray on Variant/Object/Range returns true??
 
"Tom Ogilvy" wrote in message ...
Check for a range first

if typename(varr) is "Range" then
' it's a range
elseif isarray(varr) then
' it's an array

--


Thanks Tom.

As far as you know, am I going to get "true" for isarray for others
variant/object/* combinations?
thx

QuantDev

IsArray on Variant/Object/Range returns true??
 
"Jake Marx" wrote in message ...
Thanks for the correction, Tom. I guess I typically use variables of type
Object to do that, so I wasn't even aware (or forgot) you could do the same
thing with a Variant.


Even if you declare it as an object, IsArray will still return true.

The problem here is that it looks like a range is automatically
converted to a variant array whenever a variant is expected.

Tom Ogilvy

IsArray on Variant/Object/Range returns true??
 
I wouldn't think so.

--
Regards,
Tom Ogilvy

"QuantDev" wrote in message
om...
"Tom Ogilvy" wrote in message

...
Check for a range first

if typename(varr) is "Range" then
' it's a range
elseif isarray(varr) then
' it's an array

--


Thanks Tom.

As far as you know, am I going to get "true" for isarray for others
variant/object/* combinations?
thx




Tom Ogilvy

IsArray on Variant/Object/Range returns true??
 
for example:

? isarray(thisworkbook.Sheets)
False
? isarray(Activesheet.Shapes)
False
? isarray(Range("A1"))
False
? isarray(Range("A1:A10"))
True

I can't think of another object that returns an array for the value (or
default) attribute. That doesn't mean there are not any, but I can't think
of one.

--
Regards,
Tom Ogilvy




"QuantDev" wrote in message
om...
"Tom Ogilvy" wrote in message

...
Check for a range first

if typename(varr) is "Range" then
' it's a range
elseif isarray(varr) then
' it's an array

--


Thanks Tom.

As far as you know, am I going to get "true" for isarray for others
variant/object/* combinations?
thx





All times are GMT +1. The time now is 01:41 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com