음성 언어와 엑셀 매크로(VBA) 언어의 공통점
한국어 중에 "먹다"라는 단어는 다음과 같이 사용됩니다.
1. 밥을 먹다, 2. 욕을 먹다. 3. 마음을 먹다.
즉, "먹다"라는 표현 속에는 "욕을 듣다." , "결심을 하다"로 다르게 사용되기도 합니다.
영어의 sorry는 "미안하다"로 사용되지만, 또는 "애석하다"로 사용되기도 합니다.
즉, 언어에는 동음 이어가 존재하며, 엑셀 매크로에도 같지만 서로 다르게 사용되는 명령어가 있습니다.
즉, i = i +1 에서 사용된 등호(=)는 if i= j then 에 사용된 등호(=)와 다른 의미로 사용됩니다.
i = i +1의 등호는 오른쪽 값을 왼쪽 i에 넣어라는 명령이며, i = j 로 사용된 등호(=)는 수학적 의미의 등호입니다.
즉, 한국어, 영어, 매크로(VBA) 언어란 문장 속에서 어떻게 사용되는지에 따라서 그 해석이 달라지고 있습니다. 그렇기 때문에 실제로 직접 사용하면서, 다른 사람들이 만들어 놓고 사용하고 있는 것을 보면서 계속 자신의 것으로 체화시켜야 합니다.
이전 시간에는 책을 구입해서, 매일 10페이지씩 읽는 계획을 세운다면, 며칠 만에 책을 읽을 수 있는지, 그리고 날짜별로 읽어야 할 페이지는 어떤 것인지를 엑셀 매크로(VBA)를 이용해서 만들었습니다.
그런데, 책을 읽다 보면 매일 계획적으로 읽을 수 없습니다.
어떤 날은 10페이지 이상 읽기도 하고, 어떤 날은 못 읽을 수도 있습니다.
이런 경우를 반영하는 엑셀 매크로(VBA)를 작성하도록 하겠습니다.
1일차는 10페이지를 계획대로 읽었습니다.
2일차는 13페이지를 읽었습니다.(끝 페이지 : 23페이지 +3 페이지 = 26페이지)
2일치 13페이지를 읽었기에 최초 예상되는 10페이지와 다릅니다. 그런 경우가 발생한 시점을 기준으로 매크로를 작성합니다.
이제 새롭게 등장하는 어려운 문제가 있습니다.
즉 2일차 23페이지까지 읽을 계획이었으나, 실제 2일차에 26페이지까지 읽게 됩니다.
그렇다는 건, 마지막 날(제13일차)에 남아 있는 2페이지가 없어진다는 뜻이기도 합니다.
즉, 2일 차부터 마지막 날까지 계획을 전부 수정해야 합니다.
수정을 위해서 3일차부터, 마지막 일차까지 기록된 데이터를 지워야 합니다.
그러기 위해서,
① 수정이 필요한 처음을 찾아야 하며,
② 데이터의 끝이 어디인지를 찾아야 합니다.
그런데, ①번을 찾고, ②을 찾는 순서가 아니라 ②번 데이터 끝을 찾아야지만이 ①번을 찾을 수 있습니다.
왕 초보용 엑셀 매크로(VBA)의 첫 편에 중요한 5가지 중 마지막 항목, 데이터의 마지막을 찾아야 합니다.
그리고, 그 찾는 방법은 Cells.Find("*", , , , xlByRows, xlPrevious).Row입니다.
VBA는 직관적으로 구성되어 있지만, 이 명령어는 약간 복잡합니다.
이 표현을 한글로 바꾸면, 셀에서.찾아라("모든문자",,,,행순으로, 꺼꾸로).행번호입니다. 즉, 모든 셀에서 밑으로부터 사용하고 있는 문자를 검색해서 그 행번호를 알려달라는 뜻입니다.
이 명령어를 이해하려고 하지 마시고, 그냥 메모장에 붙여놓고, 마지막 줄(행)을 찾는 명령어로 사용하시면 됩니다. 영어를 배울 때 라틴어 어원부터 배우기 시작한다면 언제 Thank you 한마디 할 수 있나요? 그냥 마지막 줄(행)을 찾는 자주 사용하는 명령이다 정도 이해하면 됩니다.
아래 그림이 바로 마지막_행번호_찾기() 매크로입니다.
단순히 마지막 줄(행)을 알기 위해서 메시지 박스에 마지막 줄을 띄우라는 명령입니다.
마지막_행번호_찾기() 매크로가 실행되면 18번 행을 알려줍니다.
②번 데이터 끝은 18번입니다.
②번 데이터 끝을 찾아내는 명령을 이용해서 데이터 시작부터(6번 행) 끝까지(18번 행)까지 자동으로 검색해서 책의 끝 페이지가 바뀐 행을 찾아냅니다.
즉, 위 그림의 명령을 사용하게 됩니다.
for next 명령과 if endif 명령으로 어디가 바뀐 페이지인지를 알아냅니다.
즉, 빨간색 박스는 마지막 줄을 찾아내는 명령어이고 for 명령을 이용해서 최초 6번 행부터 마지막 Cells.Find("*", , , , xlByRows, xlPrevious).Row 행을 찾아냅니다.
오늘은 여기까지 합니다. 왜냐하면, 엑셀에서 마지막 줄을 찾는 것은 아주 중요한 일이기 때문입니다.
마지막 줄을 엑셀에 인식시키게 되면, 얼마큼 매크로 루틴을 수행할 수 있는지 알기 때문입니다.
마지막 줄을 찾는 방법을 알아보았습니다.
붙임에 매크로 파일 올립니다.
책페이지2.xlsm 파일 다운로드
다음에는 위 그림에서 파란색 박스로 표시된 책 끝 페이지가 변경된 줄을 찾아내는 방법에 대해서 알아보겠습니다.