Toon posts:

[vb] Objects in een array plaatsen? Foutmelding!

Pagina: 1
Acties:

Verwijderd

Topicstarter
Euj iedereen!

Zoals gewoonlijk weer de gebruikelijke VB vraagjes van moi ;)

Het zit zo. Ik voer een gesplitste mailmerge uit (is verder niet zo belangrijk), waaruit een paar nieuwe worddocumenten komen. Die kan ik afvangen, en in een object stoppen:
code:
1
set mijnobjectje = msword.activedocument

alles gaat nog goed. Maar ik heb soms wel 10 documenten (het aantal kan dus wisselen!), en ik dacht, nou: arraytje bouwen! Dus ik doe:
code:
1
2
3
dim mijnobjectjes() as object
........
set mijnobjectje(i) = msword.activedocument

waarbij i dan de countervariabele is (long). En dan krijg ik: "Runtime error 9: Subscript out of range". Debuggen levert de regel
code:
1
set mijnobjectje(i) = msword.activedocument

op. Wat is er in godsnaam verkeerd? Ik ben denk ik net weer wat verder dan een newbie, maar toch nog lang geen expert!

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Je moet natuurlijk wel elementen reserveren voor je array.
Als je hier je array declareerd:
code:
1
dim mijnobjectjes() as object

Hier heeft je array nog geen elementen en daarom krijg je die error.

Je moet daarna dus een keer
code:
1
Redim mijnobjects(aantaldocumenten)

In de variabele aantaldocumenten moet dan het aantal mailmerge documenten staan.

P.S: Als ik jou was zou ik toch even wat meer gaan verdiepen in arrays.

It’s nice to be important but it’s more important to be nice


Verwijderd

Topicstarter
Ja... maar ik dacht dat je, als je van te voren niet wist hoeveel entries je ging gebruiken, je ook gewoon () op kon geven. Maar dat blijkt niet zo te zijn :( Kan dat met niet-object arrays trouwens wel?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:33

mulder

ik spuug op het trottoir

Dan zou je een collection kunnen gebruiken, maar liever een array en het Redim Preserve statement. Zo kun je zelf de array groter/kleiner maken.

oogjes open, snaveltjes dicht


Verwijderd

Je kan ook Dim docs(5) as Object gebruiken om er in één keer 6 te reserveren! Dan kan je met redim de boel nog resizen. Maar een collection/dictionary is mooier :)

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:33

mulder

ik spuug op het trottoir

Op vrijdag 15 februari 2002 09:03 schreef KoenM het volgende:
Je kan ook Dim docs(5) as Object gebruiken om er in één keer 6 te reserveren! Dan kan je met redim de boel nog resizen. Maar een collection/dictionary is mooier :)
Dit is toch VB, dan zijn het er toch 5?

oogjes open, snaveltjes dicht


Verwijderd

Op vrijdag 15 februari 2002 10:02 schreef Don Facundo het volgende:

[..]

Dit is toch VB, dan zijn het er toch 5?
Nee option base staat default op 0 dus als je een Dim docs(5) as object doet krijg je eigenlijk dim docs (0 to 5) as object. als je boven aan je source option base 1 had gezet had je idd 5 elementen gehad (element 1-5)
Pagina: 1