Redim von Arrays

Hi
Also mit redim kann man bei arrays die anzahl der elemente einer dimension jedoch nicht die Dimension verändern. Stimmt das so?

Wenn ja verstehe ich folgendes nicht.

In einem Modul deklariert:

Dim E1Rad(1, 1 To 2) As String
Dim E2Rad(1, 1 To 2) As String

Im Formcode steht:

If bedingung1 then

ReDim E1Rad(0 To List2.ListCount, 1 To 2)

elseif bedingung 2 then

ReDim E2Rad(0 To List2.ListCount, 1 To 2)

else

endif

Also beide Arrays haargleich gedimmt und redimmt. Trotzdem gibt er mir vor dem Ausführen eine Fehlermeldung aus:

Fehler beim Kompilieren. Redim ungültig.

Komischerweise jedoch NUR für den 2ten Redim (also wenn ich den als Kommentar markiere gibts keine Fehlermeldung für den ersten redim). Dabei ist es egal ob Bedingung 1 oder 2 wahr ist.

Kann mir das irgendwer erklären???

Greenberet
*der verzweifelt ist*

Also ich mach das so:

Dim Datenfeld() As Variant
ReDim Preserve Datenfeld(2, Fieldcounter)

Du darfts mit Re-dim nur die hintere Dimension verändern.

Gruss
Nils

Hallo!

Also mit redim kann man bei arrays die anzahl der elemente
einer dimension jedoch nicht die Dimension verändern. Stimmt
das so?

müsste stimmen

Dim E1Rad(1, 1 To 2) As String

ReDim E1Rad(0 To List2.ListCount, 1 To 2)

villeicht liegt es daran, dass du AS STRING nicht geschrieben hast?
ReDim E1Rad(0 To List2.ListCount, 1 To 2) as string
!?

PS: das >0 to

ReDim E1Rad(List2.ListCount)
!?

Grüsse
Thomas

Schon erledigt

Hallo!

Also mit redim kann man bei arrays die anzahl der elemente
einer dimension jedoch nicht die Dimension verändern. Stimmt
das so?

müsste stimmen

Dim E1Rad(1, 1 To 2) As String

ReDim E1Rad(0 To List2.ListCount, 1 To 2)

villeicht liegt es daran, dass du AS STRING nicht geschrieben
hast?
ReDim E1Rad(0 To List2.ListCount, 1 To 2) as string
!?

Hab ich schon versucht…

PS: das >0 to
ReDim E1Rad(List2.ListCount)
!?

hab ich auch schon…

Grüsse
Thomas

Hab noch so einiges anderes versucht hat nicht geklappt. Hab dann einfach statt einer 2-Spalten und einer 3-Spaltenmatrix 5 einzelspalten gemacht.

Es bedankt sich trotzdem

Greenberet
*der den Fehler wohl nie erfahren wird*

'löst einen Fehler schon beim Kompilieren aus
Dim arr(3) As String
ReDim arr(6)

'Lösungs-Variant 1
'Du Deklarierst mit Redim und musst die
'Array-Grösse gleich mit angeben.
ReDim arr(3) As String
ReDim arr(6)

'Lösungs-Variante 2
'Du Deklarierst mit Dim, darfst keine Array-Grösse
'angeben. Musst das Array vor der 1ten Benutzung mit
'Redim() „initialisieren“ - in diesem Falle war das
'der Wert 3. Danach kannst Du dann weiter „Redimen“
'z.B. auf 6
Dim arr() As String
ReDim arr(3)
ReDim arr(6)

Komischerweise jedoch NUR für den 2ten Redim (also wenn ich
den als Kommentar markiere gibts keine Fehlermeldung für den
ersten redim). Dabei ist es egal ob Bedingung 1 oder 2 wahr
ist.

Schon gewusst? Man kann auch mitten im Coding neue Variablen Deklarieren - normalerweise sollten diese ja am Anfang einer Funktion stehen - muss aber nicht!

alles klar?!?
greets from michL (vienna)