엑셀 매크로(VBA)를 배우면 얻는 진정한 이익은 빠른 퇴근이 아닙니다.
영어로 대화(회화보다는 약간 더 심도 있는 대화)를 할 줄 알게 되면, 외국인 친구를 사귈 수 있으며, 그들의 문화를 접하면서, 세상을 보는 다른 창을 갖게 됩니다.
엑셀 매크로(VBA)를 사용하기 시작하면, 자연스럽게 모든 일을 논리적으로 생각하는 습관을 얻게 됩니다.
네이버 지식인에 올라온 엑셀 답변을 하면서 느낀 점은 엑셀로 업무를 관리하고 해결하려는 분들의 공통점은 지극히 논리적으로 데이터를 작성한다는 것입니다. 그러나 엑셀 함수로 해결할 수 없는 여러 가지 형태가 나타납니다. 바로 "책읽기 프로그램"이 대표적인 사례입니다. 매일 10페이지씩 읽고, 어떤 날은 더 많이 읽게 되면 그날 이후에는 페이지를 변경한다는 아주 쉬운 조건조차 엑셀 함수로는 해결하기 쉽지 않습니다.
이제 매크로(프로시저)에서 매크로(프로시저)를 호출하는 방식을 통해서 아주 간단한 왕초보용 매크로를 작성했습니다.
2일차에 23페이지를 읽을 계획이었으나, 26페이지를 읽게 되면, 2일차 읽은 페이지는 13페이지이며, 3일 차부터 책읽기 페이지를 전부 수정합니다.
그래서, 최초에는 13일차에 책 125 마지막 페이지를 읽을 수 있었으나, 12일차에 모두 읽을 수 있게끔 변경됩니다.
아주 잘 작성된 엑셀 매크로입니다.
그런데 만약 이 상황에서 5일차에 책을 읽지 않았다면 어떻게 될까요? 즉, 5일차 끝페이지를 46페이지로 변경한다면 어떤 결과가 나올까요?
"변경된_페이지_찾기_조건1개만_데이터수정하기_왕초보용()" 매크로를 실행하게 되면, 조건 1개이기에 여전히 2일차 조건만 보고 그 이상 진행할 수 없습니다.
따라서, 조건 2를 부여해 주어야 합니다.
바로 조건 2란 기존에 "읽은 페이지" = 10인 경우를 찾아내면 됩니다.
그래서, 조건 2를 포함한 최종 매크로는 다음과 같습니다.
조건 1 옆에 조건 2를 추가해 주면 "변경된_페이지_찾기_조건2개_데이터수정하기_왕초보용()"가 완성됩니다.
5일차에 책을 안 읽었다면, 5일차 읽은 페이지는 0이 되며, 13일차까지 책읽기가 하루 더 생기게 됩니다.
완벽합니다. 이제 5일차 이후 책읽기가 변동해도 완벽하게 책읽기 계획표를 만들 수 있습니다.
그런데, 엑셀 매크로를 실행할 때마다 매크로 실행키를 눌러주기가 좀 불편합니다. 좀 더 편하게 엑셀 매크로 실행키를 추가해 보도록 하겠습니다.
위 그림과 같이 엑셀 리본창 메뉴 - 개발 도구 - 삽입 - Active X 컨트롤 - 명령단추를 클릭합니다.
클릭 후에, 엑셀 쉬트 적당한 곳, D1에서 E2 정도 위치에 CommandButton1을 그려줍니다.
CommandButton1에 마우스 우클릭 - 명령 단추 개체 - 편집을 통해서 이름을 바꿔 줍니다.
그러고 나서 커맨드 버튼을 더블클릭하면 다음과 같은 화면이 나옵니다.
위 그림 속에 있는 빨간 박스 속에 "매일10페이지씩_책읽기" 라고 적고,
CommandButton2를 한 개 더 만들어서 "변경된_페이지_찾기_조건2개_데이터수정하기_왕초보용"을 적어 넣으면 완성입니다.
드디어 책읽기 엑셀 매크로(VBA)가 완성되었습니다.
아주 그럴싸한 매크로 버튼을 만들었습니다. 누가 봐도 전문가가 만든 엑셀 쉬트처럼 보입니다.
이 매크로 VBA 리스트는 3개입니다.
1. 매일10페이지씩_책읽기() - 1줄
2. 매일10페이지씩_책읽기_행입력(i) - 21줄
3. 변경된_페이지_찾기_조건2개_데이터수정하기_왕초보용() - 13줄
20줄 내외로 간단하게, 복잡한 책읽기 프로그램을 완성하고 이쁘게 매크로 버튼까지 만들었습니다.
엑셀 파일을 첨부합니다. 참고하세요
책페이지5.xlsm 파일 다운로드
예뻐요!