"인덱스가 범위를 벗어났습니다." 오류가 계속 발생합니다.

"인덱스가 범위를 벗어났습니다." 오류가 계속 발생합니다.

그래서 저는 주로 Java와 C++를 사용하는데 VBA는 저에게 아주 새로운 것입니다. 오류 9 - "인덱스 범위를 벗어났습니다."가 계속 나타나는 이유가 매우 혼란스럽습니다. 코드는 다음과 같습니다.

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는 10(msgBox로 확인했습니다)이므로 Month는 길이가 10인 ArrayList입니다. 자동 필터에서 해당 배열을 사용할 수 있도록 월 값을 배열에 넣으려고 합니다. 다음 줄에서 계속 오류가 발생합니다.

monthsArr(j) = months.Item(j)

VBA가 컬렉션에 1-인덱싱을 사용한다고 생각했지만 실제로는 모르겠습니다. 왜 계속해서 이 오류가 발생하는지 아는 사람이 있나요? 감사해요

답변1

monthsArr2차원 배열로 다시 차원화했습니다 ReDim monthsArr(1, count). 2차원 배열로 유지해야 하는 경우 요소를 할당할 때 두 차원 모두에서 배열의 어느 부분을 표시해야 하는지도 표시해야 합니다. 귀하는 하나만 사용하고 있습니다: monthsArr(j) = months.Item(j). 배열의 두 번째 차원이 monthsArr(j,i) = months.Item(j)어디에 있는지 와 같아야 합니다 .i

또한 0은 1이 아니라 배열의 첫 번째 항목입니다. 따라서 선언하면 monthsArr(1,count)첫 번째 차원에는 2개의 요소/항목이 있고 두 번째 차원에는 개수 + 1개의 요소가 있음을 의미합니다.

2차원 배열이 아니라 1차원 배열을 의미하는 경우 다음을 사용해야 합니다. ReDim monthsArr(count)또는 ReDim monthsArr(count-1)0 기반 배열로 사용해야 합니다.

관련 정보