Visual Basic for Applications에서 'Subscript Out of Range'오류를 수정하는 방법은 무엇입니까?



문제를 제거하기 위해 도구를 사용해보십시오

VBA (Visual Basic for Applications)는 Microsoft에서 개발 한 Visual Basic 프로그래밍 언어의 구현입니다. VBA는 UDF를 활성화하고 작업을 자동화하며 DLL을 통해 WinAPI에 액세스하는 데 사용할 수 있습니다. 그러나 최근에는 사용자가 특정 명령을 실행할 수없고 ' 아래 첨자가 범위를 벗어남, 오류 9 ”그렇게하는 동안 팝업이 나타납니다.



첨자가 범위를 벗어남 오류



VBA에서 'Subscript Out of Range'오류의 원인은 무엇입니까?

여러 사용자로부터 수많은 보고서를받은 후 문제를 조사하기로 결정하고이를 완벽하게 해결하기위한 일련의 솔루션을 고안했습니다. 또한 트리거되는 이유를 살펴보고 다음과 같이 나열했습니다.



  • 존재하지 않는 요소 : 경우에 따라 존재하지 않는 명령의 요소를 참조했을 수 있습니다. 아래 첨자가 가능한 첨자의 범위보다 크거나 작을 수 있거나 응용 프로그램의이 시점에서 배열에 차원이 할당되지 않았을 수 있습니다.
  • 정의되지 않은 요소 : 코드의 요소 수를 식별하지 않았을 수 있습니다. 배열의 요소 수는 'Dim'또는 'ReDim'명령을 사용하여 정의하는 것이 중요합니다.
  • 잘못된 컬렉션 멤버 : 경우에 따라 사용자가 존재하지 않는 컬렉션 구성원을 참조했을 수 있습니다. 콜렉션 멤버에 대해 잘못된 참조가 작성되면이 오류가 트리거 될 수 있습니다.
  • 속기 스크립트 : 첨자의 축약 형을 사용했으며 유효하지 않은 요소를 암시 적으로 지정했을 수 있습니다. 유효한 키 이름을 사용하는 것이 중요합니다.

이제 문제의 본질에 대한 기본적인 이해를 얻었으므로 해결책으로 넘어갈 것입니다. 충돌을 피하기 위해 제시된 특정 순서대로 구현해야합니다.

해결 방법 1 : 어레이 확인

Array 요소에 대해 잘못된 값을 정의했을 수 있습니다. 따라서 Array 요소에 대해 정의한 값을 다시 확인하고 올바른 값인지 확인하는 것이 좋습니다. 또한 배열의 선언을 확인하고 검증 상한과 하한. 어레이의 치수가 재조정 된 경우 LBoundUBound 액세스를 조건화하는 기능. 색인이 변수 인 경우 변수 이름의 철자를 확인하십시오.

VBA Excel의 배열



솔루션 2 : 요소 수 지정

경우에 따라 오류가 트리거되는 코드의 요소 수를 정의하지 않았을 수 있습니다. 다음을 사용하여 배열의 요소 수를 지정하는 것이 좋습니다. 없음 또는 ReDim 기능.

Dim 및 ReDim을 사용하여 요소 수 지정

솔루션 3 : 구성 변경

이 오류는 일반적으로 사용자가 올바르지 않거나 존재하지 않는 컬렉션 멤버를 지정할 때 트리거됩니다. 따라서 인덱스 요소를 지정하는 대신 ' 각각을 위해… 다음 ”구성.

'For Each… Next'구성 사용

해결 방법 4 : 키 이름 및 색인 확인

경우에 따라 첨자의 축약 형을 사용했고 유효하지 않은 요소를 지정했을 수 있습니다. 따라서 사용하는 것이 좋습니다 유효한 키 이름인덱스 컬렉션.

유효한 키 이름 사용

2 분 읽기