[VBA/Excel] Redim geeft error...

Pagina: 1
Acties:

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025
Hoi hoi!

Ik ben nu voor de 2e week bezig met VBA in excel voor m'n werk, maar echt opschieten wil het niet..

Ik heb nu dit:

code:
1
2
3
4
5
6
7
8
9
10
11
    maxStud = Worksheets("studenten").Cells(1, 6).Value
    Dim myArray(363, 2)
    Do
        myArray((i - 2), 0) = Worksheets("studenten").Cells(i, 1).Value
        myArray((i - 2), 1) = Worksheets("studenten").Cells(i, 2).Value _
& ", " & Worksheets("studenten").Cells(i, 3).Value _
& " " & Worksheets("studenten").Cells(i, 4).Value
        i = i + 1
    Loop Until IsEmpty(Worksheets("studenten").Cells(i, 1).Value)
    ListBox1.ColumnCount = 2
    ListBox1.List() = myArray


De 362 zijn de waarden die er zijn, maar dat worden er ooit meer, om een wazige reden krijg ik die array gewoon niet variabel..
Maar goed, als ik een redim net voor de laatste regel neerzet met de werkelijke waarde (1 minder dan er nu staat), dan krijg ik de volgende error:
Array Already Dimensioned
mijn eerste reactie is: "pvd"
maar nu ik er al een uur of 2 aan hang, ben ik door mijn inspiratie heen..
Weet iemand hoe ik de array sowieso al dynamisch krijg, of de redim werkend krijg? Of welke methode dan ook?

thanks in advance..

[ Voor 19% gewijzigd door GX op 09-02-2004 14:51 . Reden: stond nog wat VBA-Help rotzooi tussen :D ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Moet je niet eerst een dynamische array aanmaken met

code:
1
Dim MyArray()


Vervolgens kan je met redim je array opnieuw resizen.

toch?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025
De inspiratie kwam zowaar terug.. de redim meteen achter de dim plaatsen maakt hem nog wel enigzins de juiste grootte..

Als iemand nog een nette oplossing heeft graag, maar doen doet ie het nu.

:Y)

btm dacht hetzelfde als ik blijkbaar :P

[ Voor 10% gewijzigd door GX op 09-02-2004 14:54 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

GX schreef op 09 februari 2004 @ 14:53:
btm dacht hetzelfde als ik blijkbaar :P
1. Nope, ik haal het letterlijk uit de vba-help.
2. Als je m'n nick afkort, doe het dan goed (BtM) :P

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025
BtM909 schreef op 09 februari 2004 @ 14:58:
[...]

1. Nope, ik haal het letterlijk uit de vba-help.
2. Als je m'n nick afkort, doe het dan goed (BtM) :P
1. oh, ik heb mezelf helemaal doodgekeken op de vba-help, maar vinden deed ik het niet.. misschien dat ik er uit irritatie gewoon overheen gekeken heb.
2. Mierenneukers heb je altijd :*


Echter,

Als ik nu een soort van zoekloopje doe, dan moet ik het aantal resultaten daarvan als array grootte hebben. Maar een redim na de loop kan niet, omdat ik dan dus al een grootte opgegeven heb voor de array. ReDim is schijnbaar niet capabel genoeg om daar omheen te werken..

Als iemand hier nog iets voor weet, zou dat erg fijn zijn. Zelf doe ik ook wel weer verder zoeken..

groetjes.

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Er zijn twee mogelijkheden:

1. Je weet van te voren het aantal regels dat je kwijtwilt. Je kunt met 1 ReDim volstaan en wel direct na de dim.

2. Je weet het van te voren niet. Aan de hand van jouw voorbeeld zou ik zeggen dat dat van toepassing is.
Je kunt nu steeds na de Do van je loop een ReDim uitvoeren waarbij je de variabele dimensie relateert aan i. Wel het keyword Preserve meegeven, dan houdt de array de oude waardes vast.

  • Maasluip
  • Registratie: April 2002
  • Nu online

Maasluip

Kabbelend watertje

GX schreef op 09 februari 2004 @ 15:03:
[...]
Als ik nu een soort van zoekloopje doe, dan moet ik het aantal resultaten daarvan als array grootte hebben. Maar een redim na de loop kan niet, omdat ik dan dus al een grootte opgegeven heb voor de array. ReDim is schijnbaar niet capabel genoeg om daar omheen te werken..
De help van VB moet voldoende zijn:
The ReDim statement is used to size or resize a dynamic array
Met ReDim kun je alleen een dynamisch array resizen. Als je begint met Dim myArray(363, 2) is je array statisch. Je zult dus moeten beginnen met Dim myArray() en later een keer ReDim myArray(363,2) of welke grootte je ook wil. ReDim's kunnen daarna ook steeds weer opgeroepen worden.
Let er wel op dat bij een ReDim het hele array gewist wordt. Wil je de bestaande gegevens behouden dan moet je ReDim Preserve gebruiken.

Maar dat staat ook allemaal in de help van VB.

Signatures zijn voor boomers.


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Maasluip schreef op 10 februari 2004 @ 08:23:
[...]
De help van VB moet voldoende zijn:

[...]
Maar dat staat ook allemaal in de help van VB.
VBA O-)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Maasluip
  • Registratie: April 2002
  • Nu online

Maasluip

Kabbelend watertje

Daar staat het ook 8)

Signatures zijn voor boomers.


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025
bigbeng schreef op 09 februari 2004 @ 17:59:
Er zijn twee mogelijkheden:

1. Je weet van te voren het aantal regels dat je kwijtwilt. Je kunt met 1 ReDim volstaan en wel direct na de dim.

2. Je weet het van te voren niet. Aan de hand van jouw voorbeeld zou ik zeggen dat dat van toepassing is.
Je kunt nu steeds na de Do van je loop een ReDim uitvoeren waarbij je de variabele dimensie relateert aan i. Wel het keyword Preserve meegeven, dan houdt de array de oude waardes vast.
briljant, volgens mij heb ik dit niet eens geprobeerd..
lange saaie werkdagen zorgen voor dode hersencellen :+

danku!
Pagina: 1