Dynamic Array problem

  • Thread starter Thread starter Werner
  • Start date Start date
W

Werner

Hi,

I want to put data in a dynamic Array with a looping. If I use a
variable to change the position in my vurtual dynamic array,it gives me
an error saying I am out of range. The solution I've found and tried in
other posts is to redim the array, but by doing so I loose all the
other datas from the previous positions (other than the actual position
redimed). SO is there a way make my dynamic array works?

Thanks!

JJD

Sub Age_moyenne_ponderee()

'Je déclare es tableaux et mes variables que j'aurai besoin pour
incrémenter.
Dim tabdynamique() As Double
Dim I As Long
Dim J As Variant
J = 0
Dim Z As Integer

' Age looping. Le principe est que la boucle effectue le calcul sur la
ligne la ligne si _
elle voit qu'elle n'est pas vide et change de ligne une fois la
suppression _
de la ligne effectuée.

For I = 12 To 65536

If Worksheets("Formulaire").Range("A" & I).Value <> "" Then

J = J + 1
ReDim tabdynamique(J)
tabdynamique(J) = (((Worksheets("Formulaire").Range("E" &
I).Value) / (Worksheets("Formulaire").Range("R5").Value)) *
(Worksheets("Formulaire").Range("H" & I).Value))

Sheets("Formulaire").Range("AF" & I).Value =
tabdynamique(J)
Else
Exit For
End If
Next I

End Sub
 
Try REDIM PRESERVE

From VB Help:
Preserve (Optional Keyword) used to preserve the data in an existing
array when you change the size of the last dimension.

Does that help?

Regards,
Ron
 
Hi Ron,

Thanks for your try but unfortunetaly, the values are not retained i
the array even with redim preserve.

Any other idea?

Werne
 
Hi,

Here's my new code. It says I am out of range at line:
ReDim Preserve tabdynamique(UBound(tabdynamique) + 1)

Note that I use Excel 97. Could it be part of an unsupported feature
for this version of VBA?

Regards,

Werner
 
The problem is the first time you try and redim the array has no
dimension.

So this will fail

Code:
--------------------

UBound(tabdynamique)
--------------------


Try this

Code:
 

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