본문 바로가기
엑셀 (Excel)/엑셀 매크로 VBA

Option Explicit 의미와 적용 유무에 따른 코드 구현 방법 (feat. 엑셀 매크로 VBA)

by ★√★ 2021. 4. 25.

안녕하세요 이번에 포스팅할 내용은 Option Explicit 의미에 대해서 포스팅을 하도록 하겠습니다. Option Explicit의 의미는 변수 선언을 요구하는지 안 하는지에 대한 선언문이라고 생각하시면 됩니다.

option-explicit-의미-적용방법-썸네일
option-explicit-의미-적용방법

 

변수 선언 요구


: 엑셀 매트로를 구현하기 위해서는 매크로 기록기를 하지 않는 이상 VBE 창에서 구현을 하셔야 합니다. VBE 창에 들어가서 도구(Tools) 옵션(Options)을 선택하면 위의 아래와 같은 창이 팝업으로 뜨게 됩니다. 일단 초기값(default)은 "변수 선언 요구(Require Variable Declaration)"가 선택되어 있지 않을 겁니다. 누가 먼저 그 컴퓨터를 선택하지 않았다면 말이죠.


▼ VBA를 공부하는 입장이자, 프로그래밍을 공부하고 있는 입장에서는 "변수 선언 요구(Require Variable Declaration)"을 체크하라고 추천해 드리고 싶습니다.




변수 선언 요구 적용한 VBA 코드 구현

 

: 위에서 설명 드린 변수 선언 요구를 적용했을 때와 적용하지 않았을 때를 비교한 코드를 구현해보도록 하겠습니다. 코드 구현에 앞서 설명드리면 변수 선언 요구 항목을 적용을 하게 되면, 변수를 선언하지 않은 에러가 발생합니다. 하지만 변수 선언 요구 항목을 표시를 하지 않으면 변수 선언을 하지 않고 바로 변수를 적용해도 에러가 발생하지 않습니다.

▼ 일단 변수 선언을 하지 않았다는 전제하에 코드를 구현해보도록 하겠습니다.

Sub test1()

     test_variable = "변수 선언 요구 적용 코드 실행 중입니다."

  msgbox test1

End Sub

 

변수-선언-요구-미적용-코드-결과
변수-선언-요구-미적용-코드-결과-값

 

 

위 코드를 보시면 "Dim" 을 통해서 변수 선언을 하지 않은 코드입니다. 이렇게 코드를 작성하고 변수 선언을 따로 하지 않았음에도 불구하고 "test 1"이라는 변수를 사용이 가능합니다. 그럼 이제는 변수 선언 요구를 체크 했을 때를 가정하고 위의 코드를 돌려보면 아래와 같이 에러가 발생하는 걸 보실 수 있습니다.

Option Explicit

Sub test1()

 test_variable = "변수 선언 요구 적용 코드 실행 중입니다."
 
 MsgBox test_variable
 
 
End Sub

변수-선언-요구-미적용-코드-에러
변수-선언-요구-미적용-코드-에러



▼ 즉 "Dim" 을 통해서 변수 선언을 하지 않았기 때문에 에러가 발생을 하는 것입니다.


 이 에러를 제거하기 위해서는 "Dim"을 통해서 변수를 선언해주시면 됩니다. 그리고 변수 선언 요구를 활성화시킬 경우에는 모든 코드 화면에 "Option Explicit " 구문이 자동적으로 생성이 되는 점 참조하시면 됩니다. 그럼 아래와 같이 코드를 작성하면 에러가 발생하지 않고 잘 구동되는 걸 확인하실 수 있습니다.

Option Explicit

Sub test1()

 Dim test_variable As String
 
 test_variable = "변수 선언 요구 적용 코드 실행 중입니다."
 
 MsgBox test_variable
 
 
End Sub

 

추가적으로 "Explicit"의 사전적인 의미는 "명시적, 명쾌하게, 분명히"입니다. 반대말은 "Implicit"입니다 뜻은 "암묵적, 암시된, 내포된"이다. 

▼ 즉,  "Option Explicit " 구문의 의미는 변수를 명시적으로 명쾌하게 선언을 하라는 식의 구문입니다.


 이상입니다. 지금까지 Option Explicit 의미 및 관련 구현 코드의 내용을 기반으로 포스팅을 작성하였습니다. 혹시 변수 선언이 번거롭고 다른 프로그래밍 언어 중에 변수 선언을 자유롭게 하는 파이썬과 같이 사용하고 싶을 경우에는 변수 선언 요구 체크 박스를 체크하지 않으셔도 무방합니다. 그럼 이만 마무리하도록 하겠습니다. 감사합니다.

 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을 때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.] 

관련 다른 글

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab