티스토리 뷰

Option Explicit는 명시적 선언을 통해서 변수를 선언할 때 사용하는 구문입니다. 그럼 명시적 선언이란 무엇일까요? 명시적 선언이란 변수를 이용하기 전에 반드시 변수를 Dim을 통해서 선언을 해야 한다는 의미입니다. 명시적 선언의 반대의 의미는 암시적 선언입니다.


즉 VBA 코드의 가장 상위단에 Option Explicit이 있다면 명시적 선언을, Option Explicit이 없다면 암시적 선언을 사용하게 되는것 입니다. 명시적 선언과 암시적 선언의 MSDN의 자료는 아래와 같이 나와 있습니다.


명시적 선언

기본적으로 Visual Basic 컴파일러에서는 명시적 선언을 사용합니다. 따라서 모든 변수를 사용하기 전에 선언해야 합니다. 이 요구 사항을 무시하고 암시적 선언을 허용할 수 있습니다. Option Explicit 을 On으로 설정하면 런타임이 아니라 컴파일 타임에 형식 유추를 강제로 수행할 수 있는 장점이 있습니다. 이렇게 하면 성능이 향상됩니다.


암시적 선언

Option Explicit 을 Off로 설정하면 코드에서 변수를 사용하기만 하면 변수가 암시적으로 선언됩니다. 컴파일러에서는 암시적으로 선언된 모든 변수에 Object 데이터 형식을 할당합니다. 그러나 응용 프로그램의 효율성 측면에서는 모든 변수를 명시적으로 선언하고 특정 데이터 형식을 지정하는 것이 좋습니다. 이렇게 하면 이름 충돌 오류와 맞춤법 오류가 발생할 확률이 줄어듭니다.  하지만 암시적 선언은 잠재적 오류를 가질 위험성을 가지게 됩니다. 


명시적 선언을 하게 되면 무조건 Dim을 통해서 변수를 선언해야 합니다. 아래의 그림은 명시적 선언과 암시적 선언의 경우 동일한 코드임에도 에러가 나고, 나지않음을 보여주고 있습니다.


가장 첫번째 줄에 명시적 선언을 위해 Option Explicit를 정의하였습니다. 

i 변수를 선언하지 않고 바로 For문에서 사용하게 되면 컴파일 오류가 발생을 합니다.



하지만 Option Explicit를 주석처리한 뒤 실행을 하게 되면 문제없이 실행이 되는것을 확인할 수 있습니다. 



위의 2개의 그림을 통해서 명시적 선언과 암시적 선언의 차이를 살펴보았습니다. 암시적 선언이 사용자 입장에서는 더 쉬울 수 있다는 생각을 할 수 있지만 실질적으로 암시적 선언은 오류덩어리를 만들 수 있는 잠재적 위험을 가지고 있기 때문에 사용자는 명시적 선언을 이용하는 것이 더 좋다는게 저의 의견입니다.


매크로 코드를 개발하기 위해서 ALT + F11을 누른뒤 모듈을 추가하게 되면 Option Explicit가 자동적으로 포함이 되지 않습니다. 따라서 명시적 선언을 이해서는 매번 이를 적어줘야 합니다. 항상 명시적 선언을 사용하고 싶다면 설정을 통해서 Option Explicit가 자동으로 추가 할 수 있습니다.


설정하는 방법은 아래와 같습니다.


Microsoft Visual Basic의 창에서 도구 - 옵션을 누릅니다.



옵션 창에서 변수 선언 요구(R)을 체크하여 활성화 시킨뒤 확인 버튼을 누릅니다. 



새로운 모듈을 추가하면 자동적으로 Option Explicit가 추가되어 있는것을 확인할 수 있습니다. 



이 글에서는 명시적 선언과 암시적 선언의 차이와 VBA에서 명시적 선언을 사용하고 설정하는 방법에 대해서 알아보았습니다.


이글이 도움이 되셨나요?

그렇다면 아래의 그림을 클릭해주세요.


댓글