Toon posts:

[VBA] Array aan array toevoegen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een testscript in VB dat een Array een tweedimensionale array moet toevoegen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
Sub testarray()
Dim BigArray As Variant
Dim small1, small2, small3 As Variant

small1 = Array("spam", "eggs", "bacon")
small2 = Array("foo", "bar", "foobar")
small3 = Array("dit", "is", "extra")
BigArray = Array(small1, small2)
'tot hier gaat het goed
BigArray.AddItem (small3)

End Sub


De fout is [424] object vereist

De array 'BigArray' wordt prima gemaakt uit de kleine arrays. Ik vrees dat AddItem niet de juiste methode is om een array toe te voegen. Help.

Verwijderd

Ik neem aan dat dit Standaard VB is ( geen .NET).
In VB is een array gewoon een variabele, geen object. je zult dus de BigArray moeten vergroten, en dan de kleine moeten toewijzen.

Verwijderd

Topicstarter
Ja is de ouderwetse VB. Ik heb net een poging gedaan om de Array uit te breiden (zonder succes)

code:
1
2
3
4
5
6
...
BigArray = Array(small1, small2)
Dim upper As Long
upper = UBound(BigArray)
ReDim BigArray(upper + 1)
BigArray.AddItem (small3)


Is additem helemaal niet het goede commando? Waarom werkt dit zo prut in VB, niet behoorlijk gedocumenteerd! Wil gewoon 'append' kunnen doen. :(

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 09:44
Je behandelt Bigarray soms als een variabele, soms als een collection/object.
Lees je eens in in Collections, dat is, als ik je code zo zie, denk ik de koers die je zoekt.

Als je toch in Arrays wilt werken, (even uit het hoofd) wordt je laatste regel niet zoiets als Bigarray(3) = small3
Dus:
code:
1
2
3
4
5
6
...
BigArray = Array(small1, small2)
Dim upper As Long
upper = UBound(BigArray)
ReDim Preserve BigArray(upper + 1)
Bigarray(3)=small3


En gebruik redim preserve, dan blijft de bestaande inhoud intact tijdens de redim.

[ Voor 31% gewijzigd door onkl op 05-03-2007 09:46 ]


Verwijderd

Topicstarter
ok ga me even verder inlezen. Ik heb inderdaad liever een array: deze dient elders als dynamisch gegevensbeik voor een pivot table.

edit: werkend resultaat

code:
1
2
3
...
ReDim Preserve BigArray(3)
BigArray(3) = small3


Begint erop te lijken. Ik was idd te object-georienteerd bezig.

[ Voor 39% gewijzigd door Verwijderd op 05-03-2007 10:10 ]