VBA for Excel의 오류 유형-목록 및 예

사용자는 종종 VBA에서 다양한 유형의 오류가 발생합니다. 아래에서는이를 처리하고 해결하기위한 몇 가지 전략을 제공합니다. 테스트 중에 코드를 조사하는 데 사용할 수있는 기술과 런타임에 오류를 포착하는 방법을 살펴볼 것입니다.

VBA for Excel의 오류 유형

VBA 코드에서 다양한 유형의 오류를 테스트하고 추적하는 것은 시간이 많이 걸리고 불편할 수 있습니다. 프로그래머의 말을 듣는 것은 드문 일이 아닙니다. 프로그래밍 프로그래밍은 컴퓨터가 수행 할 명령을 작성하는 과정입니다. 인간을위한 조리법과 비슷합니다. 레시피에는 작업 목록이 포함되어있어 테스트에 소요되는 시간의 30 %가 훨씬 넘습니다.

시간이 지남에 따라 오류를 피할 수있는 능력이 향상되지만 처음에는 완벽한 코드를 작성하지 못할 것입니다. VBA 오류를 방지, 처리 및 추적하는 방법을 배우면 앞으로 많은 시간을 절약 할 수 있습니다.

VBA 오류 유형

더 쉽게하기 위해 코딩 오류의 유형을 세 그룹으로 분류했습니다. 각 그룹에 대해 몇 가지 예를 살펴본 다음이를 조사하고 해결하는 방법에 대해 논의합니다.

1. 구문 오류 – 특정 코드 줄이 올바르게 작성되지 않았습니다.

2. 컴파일 오류 – 개별 코드 줄이 의미가있는 것처럼 보이지만 코드 줄을 모을 때 발생하는 문제

3. 런타임 오류 – 일반적으로 코드가 원칙적으로 정확하지만 사용자가 취한 조치 또는 사용중인 데이터가 예기치 않은 오류를 유발하는 경우.

구문 오류 란 무엇입니까?

구문 오류는 VBA가 코드가 가장 기본적인 수준에서 의미가 있는지 알려주는 방법입니다. 우리는 영어로 문장을 쓰는 규칙을 간단하게 비교할 수 있습니다.

  • 대상이 필요합니다.
  • 동사가 필요합니다.
  • 처음 에는 대문자 가 필요합니다.
  • 끝에 구두점 이 필요합니다.
  • 목적어, 형용사 및 기타 문법적 특징은 선택 사항입니다.

Jane VBA 코드에서 18 개의 오류를 발견 했습니다 .

비슷한 방식으로 VBA는 특정 상황에서 필요한 것에 대해 특정 규칙을 적용합니다. 예를 들어 코드에서 기본 조건부 IF 문을 시작할 때 IF 문의 첫 줄에 대해 다음 구문 규칙을 복제해야합니다.

  • If로 시작해야합니다.
  • 다음은 x> 10과 같은 논리적 테스트 여야합니다.
  • 마지막으로 then 이라는 단어 끝나야합니다.

만약 NumberErrors> 20 다음

위의 영어 또는 VBA 규칙을 위반하면 문법 (영어) 또는 구문 (VBA)이 잘못된 것으로 간주됩니다.

구문 오류를 식별하는 방법

VBA 편집기는 구문 오류를 빨간색으로 강조하여 쉽게 식별하고 해결할 수 있도록합니다. 또한 코드를 실행하거나 새 줄을 시작하려고하면 아래 구문 오류 메시지가 표시됩니다.

기본 구문 오류 :

기본 구문 오류

구문 오류 메시지 상자 :

구문 오류 메시지 상자

입력 할 때 확인이 이루어 지도록하려면 옵션 메뉴에서 "자동 구문 확인"을 활성화하십시오.

자동 구문 검사

구문 오류를 해결하는 방법

구문 오류는 코드의 특정 줄이 작성되는 방식의 실수를 나타냅니다. 코드를 실행하려면 먼저 수정해야합니다. 경험이 있으면 빨간색 텍스트 만 있으면 오류를 발견 할 수 있습니다. 그러나 여전히 멈춰 있다면 온라인에서 "if statement syntax vba"를 검색하거나 필요에 맞는 변형을 검색하면 작성하려는 특정 줄의 많은 예를 찾을 수 있습니다.

컴파일 오류 란 무엇입니까?

컴파일 오류는 구문 오류를 포함하는 더 광범위한 VBA 오류 그룹을 나타냅니다. 컴파일 오류는 전체적으로 고려할 때 코드의 문제도 식별합니다. 각 개별 줄의 구문은 정확할 수 있지만 함께 정리하면 코드 줄이 의미가 없습니다. 코드를 컴파일하거나 실행할 때 컴파일 오류가 강조 표시됩니다.

컴파일 오류를 식별하는 방법

VBA 코드를 실행하면 아래 예제에 따라 컴파일 오류가 VBA 대화 상자에 표시됩니다.

또는 프로젝트가 길거나 복잡하고 여러 루틴이 포함 된 경우 실행하기 전에 코드를 컴파일하는 것이 도움이 될 수 있습니다. 코드의 절반이 성공적으로 실행 된 다음 오류가 표시되는 상황을 방지합니다. 디버그 메뉴 → VBA 프로젝트 컴파일을 클릭하여 VBA 코드를 컴파일 할 수 있습니다.

예 1

IF 문의 누락 된 "End if"부분에 대한 컴파일 오류입니다. 코드의 모든 개별 줄은 정확하지만 함께 완전한 IF 문을 나타내지는 않습니다.

컴파일 오류-예 1

예 2

이 예에서 VBA 컴파일 프로세스는 빨간색으로 강조 표시된 구문 오류를 감지했습니다. VBA는 아래 코드에 함수의 닫는 대괄호가 없음을 나타냅니다.

컴파일 오류-예 2

예제 3

Option Explicit를 사용할 때 컴파일 오류가 일반적이며 변수가 명시 적으로 정의되지 않았을 때 발생합니다. Option Explicit가 활성화되면 모든 변수를 코드에서 사용하기 전에 Dim 문을 선언해야합니다.

컴파일 오류-예 3

컴파일 오류를 해결하는 방법

VBA 컴파일 오류로 인해 영향을받는 루틴이 실행되지 않습니다. 수정하기 전까지는 VBA에서 코드를 올바르게 해석 할 수 없습니다. 오류 메시지 상자는 종종 구문 오류보다 더 유용한 조언을 제공합니다.

오류 메시지에서 문제가 무엇인지 즉시 알 수없는 경우 Microsoft의 도움말 센터를 사용하여 문장이나 함수를 정확히 어떻게 작성해야하는지 알아보십시오. 다음은 Microsoft 웹 사이트의 "끝없는 경우 차단"오류 메시지의 예입니다.

끝이 없으면 차단

런타임 오류는 무엇입니까?

구문 오류를 수정하고 오류를 컴파일하면 원하는 작업이나 계산이 얼마나 잘 실행되는지 확인하기 위해 코드를 제대로 테스트하거나 실행할 준비가 된 것입니다. 테스트 기간 또는 실시간 코드 실행을 "런타임"이라고합니다.

단순히 코드를 보는 것만으로는 런타임 오류를 감지 할 수 없습니다. 해당 시점에 특정 입력 또는 데이터와 상호 작용하는 코드의 결과입니다.

런타임 오류는 종종 예기치 않은 데이터가 VBA 코드로 전달되고, 데이터 유형이 일치하지 않거나, 예기치 않은 0으로 나누고, 정의 된 셀 범위를 사용할 수 없기 때문에 발생합니다. 런타임 오류는 추적하고 수정하기 가장 다양하고 복잡합니다.

런타임 오류를 식별하는 방법

VBA 디버그 VBA : 코드 디버그 방법 VBA 코드를 작성하고 실행할 때 사용자가 코드 오류를 디버그하는 방법을 배우는 것이 중요합니다. Excel 사용자는 코드 기능이 문제 코드를 노란색으로 강조 표시하고 문제의 원인에 대한 작은 단서를 제공 할 것으로 기대합니다.

예 1

아래 코드는 단순히 한 숫자를 다른 숫자로 나누지 만 불가능한 경우가 있습니다. 예를 들어 셀 A1 = 2이고 셀 A2 = 0이면 0으로 나눌 수 없습니다. 런타임 오류 상자에는 문제 코드를 강조하는 디버그 버튼이 포함되어 있습니다.

런타임 오류-예 1

런타임 오류-예제 1a

예 2

이 예에서는 워크 시트에서 n 개의 회사 이름을 수집하는 배열을 만들었습니다. 그런 다음 런타임에 존재하거나 존재하지 않을 수있는 여섯 번째 항목을 참조하려고했습니다. VBA는 런타임 오류 메시지를 표시하며 디버그를 눌러 문제를 조사 할 수 있습니다.

런타임 오류-예 2

디버그를 누르면 VBA가 문제를 일으키는 코드 줄을 강조 표시합니다. 이제 "Subscript out of range"메시지를 사용하여 무엇이 잘못되었는지 확인하는 것은 나에게 달려 있습니다. 아래 첨자가 범위를 벗어남 오류는 일반적으로 코드가 원칙적으로 양호하지만 찾고있는 특정 항목을 찾을 수 없음을 의미합니다. 가장 일반적으로 Excel의 셀 또는 범위와 VBA 코드의 배열을 참조 할 때 발생합니다.

런타임 오류-예제 2a

디버그 기능이 활성화되었는지 확인하려면 옵션> 일반> 오류 트래핑 메뉴에서 기본 상태는 "처리되지 않은 오류에서 중단"이어야합니다. 옵션을 선택된 상태로 둡니다.

처리되지 않은 오류 중단

런타임 오류를 해결하는 방법

런타임 오류는 본질적으로 다양하고 복잡하기 때문에 솔루션도 다양합니다. 런타임 오류를 줄이는 두 가지 일반적인 방법은 다음과 같습니다.

오류 트래핑

코드에서 발생할 수있는 가능한 시나리오에 대해 생각해 보는 것이 좋습니다. 연습 데이터 또는 실제 사용자를 대상으로 코드를 테스트하는 것이 더 좋습니다. 오류가 있는지 여부에 따라 코드가 다른 결과로 분기되어 VBA에서 이러한 시나리오를 인식 할 수 있습니다.

예 1

여기에서 'On Error Resume Next'줄은 오류가 감지 되더라도 코드를 계속 진행합니다. 그런 다음 오류가 존재하는 경우에만 If Err> 0 테스트를 사용하여 경고 메시지를 만듭니다. 'On Error Goto 0'은 VBA를 기본 상태로 재설정합니다.

오류 트래핑-예 1

예 2

여기서 코드는 월 소득과 정의 된 일수를 기준으로 일일 소득을 계산합니다. 일 수가 제공되지 않으면 "NoDaysInMonthProvided :"라는 코드에서 정의 된 지점으로 건너 뜁니다. 여기서 한 달의 평균 일수를 기본 가정으로 사용합니다. 단순하지만 오류를 포착하고 코드의 다른 지점으로 건너 뛰는 방법을 명확하게 보여줍니다.

오류 트래핑-예 2

명확한 사용자 지침

명확한 문서 및 워크 시트 레이블을 사용하면 사용자가 의도 한 방식으로 모델과 상호 작용할 수 있습니다. 숫자 대신 텍스트를 입력하거나 나중에 코드에 영향을 줄 수있는 0을 남길 때이를 방지하는 데 도움이됩니다.

요약

VBA에는 다양한 방식으로 코드에 영향을 미칠 수있는 세 가지 주요 오류 유형이 있습니다. 디버거 및 자동 구문 검사와 같은 VBA의 오류 감지 옵션을 활성화하는 것이 중요합니다. 오류의 위치와 특성을 설정하는 데 도움이됩니다.

더 많은 리소스

Finance는 글로벌 인증 은행 및 신용 분석가 (CBCA) ™ CBCA ™ 인증의 공식 제공 업체입니다. 인증 은행 및 신용 분석가 (CBCA) ™ 인증은 금융, 회계, 신용 분석, 현금 흐름 분석을 다루는 신용 분석가를위한 글로벌 표준입니다. , 계약 모델링, 대출 상환 등. 누구나 세계적인 수준의 재무 분석가가 될 수 있도록 설계된 인증 프로그램입니다. 경력을 계속 발전 시키려면 아래의 추가 리소스가 유용 할 것입니다.

  • #REF Excel 오류 #REF Excel 오류 #REF Excel 오류는 스프레드 시트에서 큰 문제를 일으 킵니다. 예제 및 스크린 샷이 포함 된이 빠른 자습서에서 Excel에서 #REF 오류를 찾고 수정하는 방법을 알아 봅니다. #REF! 오류 ( "ref"는 참조를 나타냄)는 수식이 더 이상 존재하지 않는 셀을 참조 할 때 Excel에 표시되는 메시지입니다.
  • Excel VBA 예제 Excel VBA 예제 Excel VBA를 사용하면 Excel 내에서 프로세스를 자동화하는 매크로를 만들 수 있습니다. 이 가이드에서는 Excel VBA 예제를 사용하여 매크로를 설정하여 매크로를 기록하는 방법, 변수를 선언하는 방법 및 데이터 참조 방법을 보여줍니다.
  • Excel에서 VBA를 작성하기위한 팁 Excel에서 VBA를 작성하기위한 팁 다음은 Excel에서 VBA를 작성하기위한 9 가지 팁입니다. Excel 용 VBA는 사용자 지정 계산 및 자동화를위한 수많은 가능성을 제공합니다.
  • VBA 메서드 VBA 메서드 VBA 메서드는 VBA 개체, 변수 또는 데이터 참조에 첨부 된 코드 조각으로 해당 개체와 관련하여 수행 할 작업을 Excel에 알려줍니다. 복사, 붙여 넣기 및 선택은 수행 할 수있는 VBA 방법의 몇 가지 예일뿐입니다.

최근 게시물