VBA(Visual Basic for Applications)는 Microsoft에서 개발한 Visual Basic 프로그래밍 언어의 구현입니다. VBA는 UDF를 활성화하고 작업을 자동화하고 DLL을 통해 WinAPI에 액세스하는 데 사용할 수 있습니다. 그러나 최근에는 사용자가 특정 명령을 실행할 수 없고 "아래 첨자가 범위를 벗어남, 오류 9가 발생한다는 보고가 많이 들어오고 있습니다. " 하려고 하는 동안 팝업됩니다.
VBA에서 "아래 첨자가 범위를 벗어남" 오류의 원인은 무엇입니까?
여러 사용자로부터 수많은 보고를 받은 후 문제를 조사하기로 결정하고 문제를 완전히 해결하기 위한 일련의 솔루션을 고안했습니다. 또한 발생 원인을 살펴보고 다음과 같이 나열했습니다.
- 존재하지 않는 요소: 어떤 경우에는 존재하지 않는 명령의 요소를 참조했을 수 있습니다. 아래 첨자가 가능한 아래 첨자의 범위보다 크거나 작거나 응용 프로그램의 이 시점에서 배열에 차원이 할당되지 않았을 수 있습니다.
- 정의되지 않은 요소: 코드에서 요소 수를 식별하지 못했을 수 있습니다. "Dim" 또는 "ReDim" 명령을 사용하여 배열의 요소 수를 정의하는 것이 중요합니다.
- 잘못된 컬렉션 회원: 어떤 경우에는 사용자가 존재하지 않는 컬렉션 구성원을 참조했을 수 있습니다. 컬렉션 구성원에 대해 잘못된 참조가 만들어지면 이 오류가 발생할 수 있습니다.
- 약식 스크립트: 속기 형식의 아래 첨자를 사용했고 유효하지 않은 요소를 암시적으로 지정했을 수 있습니다. 유효한 키 이름을 사용하는 것이 중요합니다.
이제 문제의 본질에 대한 기본적인 이해를 하였으므로 해결 방법으로 넘어갈 것입니다. 충돌을 피하기 위해 제시된 특정 순서대로 구현해야 합니다.
해결 방법 1:배열 확인
Array 요소에 대해 잘못된 값을 정의했을 수 있습니다. 따라서 Array 요소에 대해 정의한 값을 다시 확인하고 올바른지 확인하는 것이 좋습니다. 또한 배열 선언을 확인하고 확인하세요. 상한과 하한. 어레이의 치수가 재지정된 경우 LBound를 사용해야 합니다. 및 UBound 액세스를 조절하는 기능. 인덱스가 변수인 경우 변수 이름의 철자를 확인하십시오.
해결 방법 2:요소 수 지정
경우에 따라 오류가 발생하는 코드의 요소 수를 정의하지 않았을 수 있습니다. Dim을 사용하여 배열의 요소 수를 지정하는 것이 좋습니다. 또는 ReDim 기능.
해결책 3:구성 변경
이 오류는 일반적으로 사용자가 올바르지 않거나 존재하지 않는 컬렉션 구성원을 지정할 때 트리거됩니다. 따라서 인덱스 요소를 지정하는 대신 "For Each...Next ” 구성.
해결책 4:키 이름 및 색인 확인
어떤 경우에는 아래 첨자의 약식 형식을 사용했을 수 있으며 유효하지 않은 요소를 지정합니다. 따라서 유효한 키를 사용하는 것이 좋습니다. 이름 및 색인 컬렉션을 위해.