title image


Smiley Re: da ist wohl der ansatzpunkt...
Hallo,



ja, das geht leider nicht. Wenn Redim ausgeführt wird, ob mit oder ohne Preserve, kann nur die letzte Dimension verändert werden.



Bring einfach mal den Cursor auf Redim und drück F1. Wird recht gut erklärt in der Hilfe.



Hier noch mal eine bessere Erklärung als vorhin zur Übergabe:





Private Sub Command1_Click()

Dim AltText() As String 'Deklaration ohne Dimension

Dim a As Long

  

  a = 0

  Do While a <= 40

   ReDim Preserve AltText(a) 'Arraygrösse anpassen, Werte dabei erhalten

    AltText(a) = "Eintrag " & a

     a = a + 1

  Loop

   

 'Prozeduraufruf

 MeineSub AltText



'Werte des Arrays sowie Arraygrösse wurden in der Sub MeineSub verändert

'Ubound(Neutext) enthält nun 10

For a = 0 To UBound(AltText)

  List1.AddItem AltText(a)

Next a

End Sub







'//Sub MeineSub(Variable)// geht auch, nur wird dann Variable als Variant

'behandelt und verbraucht mehr Speicher, 22 Byte+Zeichenlänge(Strings),

'16 Byte(Zahlen) - Strings verbrauchen z. B. 10 Byte + Zeichenlänge, Zahlen

'je nach Typ zwischen 1 Byte und 14 Byte

Sub MeineSub(ByRef Variable() As String)

Dim i As Long

  For i = LBound(Variable) To UBound(Variable)

    Variable(i) = Variable(i) & " Tralala"

  Next i

  'Werte des übergebenen Arrays wurden erstmal verändert und nun wirds noch

  'verkleinert, Werte bleiben bis 10 erhalten

  ReDim Preserve Variable(10)

End Sub



Code eingefügt mit Syntaxhighlighter 2.5




Gruß manyki

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: