VBA를 사용하여 코딩을 할 때 '아래 첨자 사용이 잘못되었습니다'라는 메세지가 자주 뜬다. VBA에 익숙한 사람들은 그저 그러려니 하고 담담하게 디버깅을 하게 될 정도로 익숙한 에러 메세지이다. 하지만 VBA 초보들에게는 당황스럽기가 이를 데가 없다. 통상 아래첨자란 다음을 뜻하기 때문이다.
코드를 아무리 뜯어봐도 아래첨자는 없다. 그런데 아래첨자가 잘못되었단다. 당황을 넘어 어이가 없을 지경이다. 덧없이 VBA코드를 다시 실행해 봐도 어김없이 다음과 같은 에러 메세지가 뜬다.
워낙 통상적으로 발생하는 에러 메세지이다보니 누군가는 어딘가에 이에 대한 근본적 설명을 했으리라 생각했는데, 생각보다 쉽게 찾을 수가 없었다.
수십년 동안 고쳐지지 않는 오역: 아래첨자 사용이 잘못되었습니다.
본론부터 말하자면 이는 오역 때문에 발생한 문제이다. 즉, 영문을 한글로 잘못 번역하여 생기는 문제이다. 하지만 수십년이 지나도 바로잡히지 않았다.
'아래첨자 사용이 잘못되었습니다'는 아래 영어 에러메세지를 번역한 것이다.
'아래첨자가 잘못되었습니다'는 'Subscript out of range'를 번역한 말이다. 참으로 웃지 못할 번역이다.
그렇다면 Subscript out of range는 무슨 뜻일까?
Subscript의 제1용례는 우리가 아는 '아래첨자'가 맞다. 하지만 computing 용어에서 쓰는 subscript는 이와는 뜻이 다르다. 구글 사전에서 subscript를 검색해보면 다음과 같은 화면이 나온다.
우리가 눈여겨 봐야 할 부분은 빨간색으로 표시한 computing에서 쓰이는 subscript의 뜻이다. 빨간색 안 영문을 중요 내용만 대략적으로 번역하면 다음과 같다.
프로그램에서 사용되는 배열의 구성요소 중 하나를 특정하는 기호(명목상 아래첨자라고 하지만 실제로는 아래첨자로 표기하지 않음).
즉 computing에서 subscript는 아래첨자가 아니라 '지칭하는 어떤 대상'이다. 그렇다면 'subscript out of range'는 무슨 뜻일까. out of range를 직역하면 '범위 내에 없다'이다. 의역하자면 '찾을 수 없다'는 뜻이다. 그러므로 'subscript out of range', 즉 '아래첨자 사용이 잘못되었습니다'는 '당신이 가져오려고 하는 그 값을 엑셀 스프레드시트에서 찾을 수가 없다'는 에러 메세지이다.
'아래 첨자가 잘못되었습니다'가 뜨면 확인해야 하는 것
자, 이제 우리는 '아래 첨자 사용이 잘못되었습니다'라는 에러 메세지가 무슨 뜻인지를 알았다. 그렇다면 이 에러메세지가 떴을 때 무엇을 확인해야 할까?
앞서 말했듯 '아래 첨자 사용이 잘못되었습니다'는 결국 참조(혹은 지칭)가 잘못되었다는 뜻이다. 가장 흔한 경우를 예로 들어보자. VBA코드 상에 'main' sheet의 A1 셀 값을 가져오라고 적었다. 그러고 실행을 해 보니 '아래 첨자가 잘못되었습니다'가 뜬다. 이 경우는 main이라는 이름을 가진 sheet가 없거나 오타를 내서 main을 mian이라고 잘못 적었을 가능성이 매우 크다. 즉, VBA코드가 당신이 지정한 장소를 못 찾는 경우에 '아래 첨자 사용이 잘못되었습니다'라는 이상한 문장의 에러 메세지가 뜬다.
오역이지만 무시하면 안 되는 에러 메세지: '아래 첨자 사용이 잘못되었습니다'
VBA를 다룬지 얼마 안 된 사람은 '아래 첨자 사용이 잘못되었습니다'라는 에러 메세지가 뜨면 '난 아래 첨자를 코드에 쓴 적이 없는데?'라면서 무심코 지나치기도 한다. 하지만 이는 위험하다.
통상 VBA는 실행 버튼과 연결되어있고 한 엑셀에 버튼이 여럿인 경우가 많다. 어떤 엑셀 파일에서 A버튼을 누른 후에 B버튼을 누르는 작업을 수행해야 한다고 할 때, A버튼은 로딩과 관련된 버튼이며 B버튼은 실질적인 계산작업 버튼인 경우가 많다. 이 경우 만약 A버튼을 눌렀는데 '아래 첨자 사용이 잘못되었습니다'가 떴다고 가정해보자. 그렇다면 무언가가 로드가 안 된 채 VBA 코드가 중단된 것이다. 문제는 이 메세지를 무시하고 B버튼을 눌렀을 때 발생한다. 이 경우 검증 코드가 꼼꼼하게 짜여진 경우가 아니라면, B버튼은 에러 메세지 없이 돌아가버릴 수 있다. A버튼이 로드하지 못한 값을 Null값, 혹은 0으로 입력한 채로. 즉, 잘못된 값이 계산이 되게 된다.
이제는 바로잡을 때도 된 너무도 역사와 전통이 긴 오역
많이 바라지도 않는다. '아래 첨자 사용이 잘못되었습니다' 대신에 '지정한 값을 찾을 수 없습니다' 정도로만 고쳐줘도 수많은 VBA입문자들의 고생과 수고를 덜어주지 않을까. VBA를 사용한지 꽤 오래 된 사람들도 아직까지 '아래 첨자가 잘못되었습니다'가 무슨 뜻인지는 모른 채 에러가 떴으니 반사적으로 디버깅을 해야지 하는 식으로 작업하는 경우도 꽤 많이 보았다. 숙련자인 만큼 디버깅은 금방 하겠으나 아무래도 에러 메세지가 무슨 뜻인지 알고 작업하는 편이 더 효율적이다.
엑셀 VBA는 회사-특히 계산작업이 많은 금융회사-에서 일상적으로 많이 쓰는 툴이다. 어떤 파일들은 아무도 내용은 모른 채 버튼 누르는 순서만 인수인계가 되어 내려져오기도 한다. 이 경우에도 '아래 첨자 사용이 잘못되었습니다'라는 에러 메세지는 너무도 당황스러울 것이다.
에러 메세지는 코드 상 무엇이 잘못되었는지는 알려주는 중요한 안내판 역할을 한다. 너무도 오랜 세월동안 잘못된 채로 유지되어 온 에러 메세지이기는 하지만, MS에서 지금이라도 말이 되게 수정을 해 주었으면 좋겠다.
'IT > 프로그래밍' 카테고리의 다른 글
프로그래밍 공부를 시작하기 전에 짚어볼 사실들 (2) | 2022.01.30 |
---|
댓글