
Ich verwende hauptsächlich Java und C++ und VBA ist für mich völliges Neuland. Ich bin sehr verwirrt, warum ich immer wieder den Fehler 9 erhalte – „Index außerhalb des gültigen Bereichs“. Hier ist der Code:
Dim count As Integer
Dim j As Integer
count = months.count
Dim monthsArr() As String
ReDim monthsArr(1, count)
For j = 1 To count
monthsArr(j) = months.Item(j)
Next j
Count ist gleich 10 (ich habe es mit einer msgBox überprüft) und daher ist months eine ArrayList mit der Länge 10. Ich versuche, die Werte von months in ein Array zu packen, damit ich dieses Array in einem Autofilter verwenden kann. Ich erhalte in dieser Zeile immer einen Fehler:
monthsArr(j) = months.Item(j)
Ich dachte, VBA verwendet 1-Indizierung für Sammlungen, aber ich weiß es wirklich nicht. Weiß jemand, warum ich immer wieder diesen Fehler bekomme? Danke
Antwort1
Sie haben es neu dimensioniert, monthsArr
sodass es ein zweidimensionales Array ist ReDim monthsArr(1, count)
. Wenn es ein zweidimensionales Array bleiben soll, müssen Sie beim Zuweisen von Elementen auch angeben, welcher Teil des Arrays in beiden Dimensionen vorhanden ist. Sie verwenden nur eine: monthsArr(j) = months.Item(j)
. Es sollte etwa so aussehen: monthsArr(j,i) = months.Item(j)
wobei i
die zweite Dimension des Arrays ist.
Beachten Sie auch, dass in einem Array zuerst 0 und nicht 1 steht. Wenn Sie also deklarieren monthsArr(1,count)
, bedeutet dies, dass die erste Dimension 2 Elemente/Artikel hat, während die zweite Dimension Anzahl + 1 Elemente hat.
Wenn es kein zweidimensionales Array, sondern ein eindimensionales Array sein soll, sollten Sie Folgendes verwenden: ReDim monthsArr(count)
oder ReDim monthsArr(count-1)
als 0-basiertes Array.