How to keep an Array 'alive'

  • Thread starter Thread starter Fred
  • Start date Start date
F

Fred

Hi there,

I have a Sub in a form, which runs when a commandbutton is pressed. In the
Sub an array is dimmed and filled with values.

e.g. Dim NANames(1 To 20, 0 To 2)

I need the values of the Array in another Sub, but the array is only
available in the specific Sub when created. Declaring it Public is not
possible with an array, so I need another way of doing this.

Anyone ?

Thanks !
 
Rob,

thanks for the quick reaction ! But....
I declared it public in the main module which starts (load/show) the form on
which the array is filled. At the end of code execution of the Sub on the
form the Array is alive and filled with the correct values, but when the Sub
ends (the form is still active) the values disappear...


???
 
Here's an example:

Module Code:

Public arr() As String

Sub test()
Dim i As Long
UserForm1.Show '(assuming your userform is named UserForm1)

For i = LBound(arr) To UBound(arr)
Debug.Print arr(i)
Next
End Sub


UserForm1 Code :

Private Sub UserForm_Initialize()
Dim i As Long

ReDim arr(50)

For i = LBound(arr) To UBound(arr)
arr(i) = "string " & i
Next
End Sub
 
Rob,

it works ! Thanks.
I had forgotten to take the Dim statement out of the Sub on the form...
 
Water it regularly and make sure it gets plenty of sunlight.

(Sorry, I just couldn't resist ;)
 
Fred said:
* Declaring it Public is not
possible with an array*

Why not, but you have to declare it in Module1 (Or whatever the mai
module is).

I have a similar problem, I have a public array which is used for
different userforms so there is no point filling the array twice (Whic
is 70x3) everytime I open a userform I filled it when opening th
workbook but for some reason when you press stop button on debugger an
some other times I have to keep running the procedure to fill it sinc
it is emptied for some reason.

Best Regards

Noo
 

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