ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   arrays - module to module (https://www.excelbanter.com/excel-programming/292566-arrays-module-module.html)

mike

arrays - module to module
 
Is it possible to create an array in one module and then
write the array in another module OR does all the activity
have to tale place in one module? Thanks for the help

JE McGimpsey

arrays - module to module
 
It's possible if you declare the variable as Public in a regular code
module outside a procedure. See "Understanding Scope and Visibility" in
VBA Help.



In article ,
"mike" wrote:

Is it possible to create an array in one module and then
write the array in another module OR does all the activity
have to tale place in one module? Thanks for the help


Bob Phillips[_6_]

arrays - module to module
 
Mike,

What you want is perfectly feasible. You could either declare the array as a
module variable, that is at the start of the module and not in a macro, or
you could pass it ByRef as an argument from one procedure to another, which
passes the variable pointer and allows updating in another procedure.

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"mike" wrote in message
...
Is it possible to create an array in one module and then
write the array in another module OR does all the activity
have to tale place in one module? Thanks for the help




Ola Lövgren

arrays - module to module
 
Hi!

Either you can declare the array as a public variable on the General section of one of the modules and then simply reference the array in both modules since it is a global variable, or you can send it from Sub (or Function) to Sub (or Function) as a parameter. A variant can contain an array so you can allso send the array in a variant parameter but if you know the typw of data you just declare an array without telling the size in the parameter declaration.

Example:

Sub test()
Dim lngArray(10) As Long

PopulateArray lngArray()
PrintArray lngArray()
End Sub

Public Sub PopulateArray(ByRef lngArray() As Long)
Dim lngLowerBound As Long
Dim lngUpperBound As Long
Dim lngCounter As Long

lngLowerBound = LBound(lngArray)
lngUpperBound = UBound(lngArray)

For lngCounter = lngLowerBound To lngUpperBound
lngArray(lngCounter) = lngCounter
Next
End Sub

Public Sub PrintArray(ByRef lngArray() As Long)
Dim lngLowerBound As Long
Dim lngUpperBound As Long
Dim lngCounter As Long

lngLowerBound = LBound(lngArray)
lngUpperBound = UBound(lngArray)

For lngCounter = lngLowerBound To lngUpperBound
Debug.Print lngArray(lngCounter)
Next
End Sub

In this example the three different Subs can be placed in three different modules and still work together.

Good luck!


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

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