duplicate declaration

  • Thread starter Thread starter dtshedd
  • Start date Start date
D

dtshedd

I am trying to pass an array as an argument to a user defined function,
and would like to also then pass the same array to other routines in
the same module, however not as arguments but using module level
declarations like Private.

Although I do not receive the "duplicate declaration" statement the
arrays are zeroed out once the current function is left for a
subroutine call.

is there any convenient way to transfer this array without using it
repeatedly as an argument? I have a chain of subroutine calls
(subroutines which call other subroutines) all of which refer to the
same array, and the easiest is to make the array accessible anywhere in
the module.

The original program (Fortran) read the array in from an input file and
transfered the contents using common blocks.

appreciate any assistance.

dan
 
Although I do not receive the "duplicate declaration" statement the
arrays are zeroed out once the current function is left for a
subroutine call.

So you're declaring the variable in each function? In VBA, that means that
each of your arrays goes out of scope when the function completes.

It sounds like you want to declare the array at module level, at the
beginning of the module, outside of any function definitions, just after the
initial "Option Explicit" line. (Which you should always have turned on in
your VB editor options to save you from typos and thinkos associated with
variable names.)

At the top of your module:

Option Explicit
Dim MyArray() as Integer ' if you want a resizable (dynamic) array
Dim FixedArray(5) as Integer ' if you don't

But think about passing the array as an argument. That will make it easier
to use your function in another module someday without messing around with
module level variables and name conflicts and who knows what other
frustrations.

--Shawn
 

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

Back
Top