Can I test dynamic array for empty?

G

Guest

I'm reading Excel files with a Visual Basic 6.0 program. In several cases,
I'm building dynamic arrays with the elements I find. I would like an
elegant way to determing if anything has been put into my dynamic array yet.

Before the array has been ReDim-ed the first type, attempts to use LBound or
UBound give subscript out of range errors.
The debugger shows me "arrayName = Nothing" before the array is ReDim-ed.
Attempting to test arrayName = Nothing gives "Invalid Use of Object" error.
Attempting to test arrayName Is Nothing gives "Type Mismatch" error.

I've been working around this by Redimensioning the array as (0 To 0) until
the first use, then Redimensioning as (1 to 1) for the first element, (1 to
2) next, etc., but this is clunky and using 1-based subscripts isn't portable
to VB.Net, which I may do in the future. I don't know an easy way of
determining if a (0 to 0) array is empty or contains one element, without
using some dummy value.

Does anyone know a better way?
 
G

Guest

Alan -
Thank you for your help. Unfortunately, the CountA function gave me
"Compile Error: Only user-defined types defined in public object modules can
be coerced to or from a variant or passed to late-bound functions". This
error probably occurs because my array contains elements of a type I defined;
the method might work for my other arrays. Can someone point me toward more
information on public object modules? I couldn't find much enlightenment in
the online VB help.
 
D

Dave Peterson

Take a look at Erase in VBA's help.


Myrna -
Thank you, that worked for my situation. I'm only using the array once. I
don't know if there's a way to completely clear the array so that it would be
undefined again, if I wanted to use it over.
 
G

Guest

I hate to break something just to make it right. Using error trapping for
this purpose makes sense to the person who wrote the code but it is an
inconvenience for anyone else reading your code.

I propose that one uses a boolean flag (e.g., isArrayEmpty) to see if the
array was set or if any items were inserted at the point where the array is
created. Later you just test the flag.

Ed
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top