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, 11:41 (Dieser Beitrag wurde zuletzt bearbeitet: 27.03.2021, 11: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!