[VBA] ReDim geeft 'subscript out of range'

Pagina: 1
Acties:

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025
Hallo,

Ik heb al eens eerder iets geplaatst over de redim, maar dat was op een andere manier opgelost.

echter, ik heb nu een 3d-array en die wil ik een tikje vergroten, zodat het formaat gelijk blijft aan de gegevens die erin staan. Maar hij doet het niet! :(

Het volgende stukje werkt al niet:
code:
1
2
3
4
5
6
Sub test()
    Dim arrayding
    ReDim arrayding(1, 5)
    arrayding(1, 3) = "tralalal"
    ReDim Preserve arrayding(2, 5)
End Sub

Wie o wie kan mij vertellen waarom?

thanks in advance.

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025
Ik heb al iets gevonden (domweg overheen gekeken):
Met het sleutelwoord Preserve kunt u alleen de laatste matrixdimensie wijzigen. U kunt het aantal dimensies in het geheel niet wijzigen. Als de matrix bijvoorbeeld slechts één dimensie heeft, kunt u de grootte van deze dimensie aanpassen omdat dit de laatste en enige dimensie is. Als de matrix echter twee of meer dimensies heeft, kunt u alleen de grootte van de laatste dimensie wijzigen en toch de inhoud van de matrix behouden. Het volgende voorbeeld geeft aan u hoe de grootte van de laatste dimensie van een dynamische matrix kunt wijzigen zonder bestaande gegevens te verwijderen die in de matrix zijn opgenomen.
Vraag word dan:

Hoe krijg ik de eerste dimensie wel goed?

  • El_Quedro
  • Registratie: September 2001
  • Laatst online: 04-08-2025

El_Quedro

Pininfarina

code:
1
2
3
4
5
6
Sub test()
    Dim arrayding(,) As String
    ReDim arrayding(1, 5)
    arrayding(1, 3) = "tralalal"
    ReDim Preserve arrayding(2, 5)
End Sub



Je moet er wel ff een array van maken, like this:
Dim arrayding(,) As String

Ook raad ik je aan een object mee te geven.

Met preserve kan je als je bijvoorbeeld een record toevoegen.
code:
1
2
3
4
Dim arrayding(5) as string
' 5 records
Redim Preserve arrayding(6)
'6 records.. de eerste 5 blijven ongewijzigd.

[ Voor 32% gewijzigd door El_Quedro op 27-02-2004 11:42 ]


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025
Ja, maar dat werkt dus alleen op de laatste dimensie, de eerste dimensie veranderen geeft dus de subscript out of range error..

Momenteel heb ik het gewoon omgedraait, maar erg netjes is het niet.

[ Voor 45% gewijzigd door GX op 27-02-2004 12:13 ]


Verwijderd

Je zou natuurlijk een array van arrays kunnen maken, dan kun je allebei de dimensies aanpassen. Alleen moet je dan opletten dat je het aanroepen van de gegevens iets ander moet doen, i.p.v. Array(1,5) moet je dan Array(1)(5) hebben.

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025
Verwijderd schreef op 27 februari 2004 @ 12:17:
Je zou natuurlijk een array van arrays kunnen maken, dan kun je allebei de dimensies aanpassen. Alleen moet je dan opletten dat je het aanroepen van de gegevens iets ander moet doen, i.p.v. Array(1,5) moet je dan Array(1)(5) hebben.
Werkt dat werkelijk in VBA?

code:
1
array(0) = array("bla","blader","blaadst")


Niet eens aan gedacht, even een testje doen..

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025
GX schreef op 27 februari 2004 @ 12:19:
[...]

Werkt dat werkelijk in VBA?

code:
1
array(0) = array("bla","blader","blaadst")


Niet eens aan gedacht, even een testje doen..
Jaahaa, hoezee.

Ik dank u zeer :*
Pagina: 1