Sub arrUbound()
Dim arrC
arrC = Array2Dim
Debug.Print UBound(arrC, 1) 'Bis hier läuft alles, aber dann :-('
Debug.Print UBound(arrC, 2) 'Index außerhalb des gültigen Bereich, eigentlich klar - aber welche Lösung gibt es?
End Sub
Function Array2Dim()
Dim x
Dim y
Dim arrA()
Dim arrB()
For x = 0 To 2
ReDim Preserve arrA(x)
For y = 0 To 2
ReDim Preserve arrB(y)
arrB(y) = y
Next y
arrA(x) = arrB
Next x
Array2Dim = arrA
End Function
Mit einer Schleife durchzählen bis zum Ende wäre eine Möglichkeit, aber mit UBound?
[ Bild bitte so als Datei hochladen: Klick mich! ]
ermittelt werden soll die Größe des inneren Array's: arrC(0)(3)
da Redim nur für 1-dimensionale Array anwendbar ist hab ich die Arrays verschachtelt. Mit Schleife kann die Größe des inneren Arrays ermittelt werden aber für UBound hab ich noich keine Lösung gefunden.
27.03.2021, 10:41 (Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2021, 10:56 von RPP63.
Bearbeitungsgrund: Leerzeilen entfernt
)
Ich hatte Dir doch die 3 Debugs geschrieben.
Bei Deinem obigen Code ergibt UBound(arrC(0)) eben 2
Ich hab die Function mal ein wenig geändert: Function Array2Dim() Dim x Dim y Dim arrA() Dim arrB() For x = 0 To 2 ReDim Preserve arrA(x) For y = 0 To 3 ReDim Preserve arrB(y) arrB(y) = y Next y arrA(x) = arrB Next x Array2Dim = arrA End Function
Folgendes Makro Sub arrUbound() Dim arrC, i& arrC = Array2Dim For i = 0 To UBound(arrC) Debug.Print "UBound(arrC(" & i & ")) ist: " & UBound(arrC(i)) Next End Sub
Hallo Ralf, das ist die Lösung.... mit der Schleife hatte ich es erfolgreich versucht. Ich habe aber den inhalt des Feldes geprüft und bei Err.Number = 9 die Schleife abgebrochen und y ausgegeben. Aber Dein Vorschlag ist die elegantere Lösung!