엑셀자료 사용 안내 엑셀 매크로(VBA)를 이용하여 만든 간단한 프로그램과 엑셀 매크로(VBA)를 배울 수 있는 강좌가 있습니다.
따라서, 대부분 프로그램을 이용하기 위해서는 엑셀 매크로 사용하기 설정을 하여야 합니다. (1.보안설정) 클릭 (2.개발도구설정) 클릭

엑셀 매크로(VBA) 배우기 위해 마이크로 소프트사에 직접 전화했습니다. 

엑셀을 처음으로 접하게 된 것은 회사 생활을 시작하며서, 동료 직원들이 사용하는 주판(주산) 계산 능력을 따라잡기 위함이었으나, 실제로 엑셀을 직접 접한게 된 것은 조금 더 회사 생활을 한 이후입니다.

왜냐하면, 회사 생활을 시작하게 된 시점은 PC에 윈도 3.1이 설치되어 있었으나, 활용할 수 있는 프로그램이 없었습니다. Dos가 여전히 주력 프로그램이기 때문이었습니다.

그래서, 회사에서 공급한 컴퓨터용 계산 프로그램은  금성소프트웨어(LG)에서 Hana spread sheet로 로터스123, 쿼트로 프로 등에는 없는 깔끔한 표를 만들어주는 훌륭한 프로그램이었습니다. 또한 일부 부서에서는 엑셀의 전신인 멀티 플랜(MP)를 이용하기도 하였습니다.

그러나, 이들 프로그램은 수식 계산은 대동소이 하나 한계는 바로 매크로이었습니다.

하나 스프레드시트, 로터스123, 쿼트로프로, 멀티플랜에 있는 매크로는 단순한 순차 기록 매크로였으며, 현재와 같은 엑셀 VBA 매크로는 아니었습니다. VBA매크로는 아마도 엑셀 5.0부터로 생각됩니다.

엑셀에 엑셀 VBA 매크로 가 더해지고, 막강한 줄긋기 기능이 확보되자 대부분 사무환경은 워드에서 엑셀로 넘어가게 됩니다. 숫자가 별로 필요 없는 단순한 Document 조차 엑셀에서 작성하는 사례가 늘어나게 됩니다.

이 당시, 제가 엑셀을 스스로 공부하면서 저지른 무지한 행동 한 가지를 소개합니다.

엑셀이 초창기에는 참고할만한 도서도 많지 않았고, 제 컴퓨터에 대한 얕은 지식으로 궁금한 사항이 생길 때, 한국 마이크로소프트에 직접 전화를 걸어서 엑셀의 기능에 대해서 물어보곤 했습니다.

아마, MS 회사에서 상담을 해주시는 분들이 지금과 같은 콜센터 직원이 아니고, MS 직원이라 엑셀 사용법을 가르쳐 줄 수 있었던 것으로 생각됩니다. 약 3번째쯤 제가 궁금한 점을 질문하고 MS 직원은 답변한 뒤에, MS 회사는 엑셀의 사용법을 가르쳐 주는 곳이 아니며, MS에서 구입한 엑셀이 설치가 안 될 경우에 지원을 해 주는 곳이라고 합니다. 즉 더 이상 단순 사용법은 질문은 곤란하다고 저에게 알려줍니다. 

그 뒤에 저는 엑셀 활용 책자를 구입하고, 직접 책 저자에게 전화해서 엑셀을 배웠던 기억이 납니다. 너무 친절한 엑셀 책 저자님, 그러나 답변을 이해할 수 없었던 저의 짧은 지식이었습니다.

지금 돌이켜보면, 무지한 행동들이었습니다.


 

지금까지 배웠던 엑셀 매크로(VBA)는 VBA 코드에 집중했으나, 이번에는 VBA 코드가 에러가 발생할 때 필요한 디버깅에 대하여 알아보도록 하겠습니다.

실제로 저는 디버깅을 거의 하지 않습니다. 대부분 MsgBox로 해결해 왔습니다.

그 이유는 제가 만드는 엑셀 코드는 기껏해야 20줄 이내입니다. 디버깅을 할 필요가 없었기 때문입니다.

그래서, 엑셀로 해결하기 쉽지 않은 문제를 풀어나가는데  디버깅을 할 필요가 없는 사례를 찾아보았습니다.

아래의 사례는 2020년 3월에 네이버 지식인에 질문으로 등록된 것입니다.

조건은 다음과 같습니다.

 


자신은 하루에 책 읽기를 매일 하고자 계획합니다.

그래서, 책을 구입하면 매일 10 페이지씩 읽을 것이라, 일자별로 시작 페이지와 끝 페이지를 알고 싶고,

특정한 날에 10 페이지를 읽지 못하거나 더 읽게 되면, 그 페이지를 기준으로 앞날의 계획을 수정하고 싶다는 조건입니다.


 

일견 아주 쉬운 질문으로 보입니다. 그런데 실제로 약 5시간이 경과하도록 네이버 지식인에서 아무도 답변을 하지 않았고, 질문자는 스스로 무리한 질문으로 생각해서인지 질문을 삭제해서 지금은 없어진 상태입니다.

위 질문을 엑셀로 구현하기 쉽지 않은 이유는 바로 단순한 조건이 아니기 때문입니다.

- 첫째, 매일 10페이지씩 구분한다(쉬움)

- 둘째, 끝 페이지가 10페이지가 아니면 그날 이후 페이지를 수정한다(쉬움)

하지만, 2번째 조건은 단 1번 발생하는 것이 아니라, 수차례 발생할 수 있다는 점이 문제를 어렵게 만듭니다.

제 생각에는 사무환경에서 발생하는 엑셀 문제는 이 이상 어려운 조건은 거의 없을 것으로 생각됩니다.

만약 이 정도 난이도 엑셀 문제를 스스로 해결한다면, 대부분 업무 중에 발생하는 일은 엑셀로 해결 가능합니다.

 

이미지 048.png

 

 

먼저, 위와 같이 엑셀에 필요한 서식을 만들었습니다.

구입한 책의 첫 페이지와 끝 페이지 정보, 그리고 매일 읽고 싶은 페이지를 정의합니다.

1. 매일 10페이지씩 책 읽기 매크로(VBA) 코딩하기

이것은 아주 단순합니다.

 

이미지 049.png

 

 

총 18줄로 작성된 코드입니다.

첫째, 파란색 박스는 책의 첫 페이지, 마지막 페이지, 그리고 증감 페이지를 지정합니다.

둘째, 빨간색 박스인 Do While Loop를 실행합니다.

Do While Loop는 For Next와 아주 유사합니다. 

 


Do While i_end >= i_start 

      i_start = i_start + 증감 페이지(i_step)

Loop


 

Do While Loop 속에서 시작페이지를 증감 페이지만큼 늘리고, 그 늘린 숫자와 마지막 페이지를 비교해서, 마지막 페이지 보다 작을 때까지 계속 루핑 하라는 명령입니다.

위 매크로(VBA) 코드를 실행하면, 다음과 같은 결과가 나오게 됩니다.

이미지 050.png

 

 

즉, 책을 새로 사서 매일 10페이지를 읽는다면,  13일 만에 전부 읽게 됩니다.

이제 네이버 지식인에 질문한 질문자의 첫 번째 조건을 매크로(VBA)로 만들었을 뿐입니다.

다음번에는 질문자의 두 번째 조건에 대해서 알아보도록 하겠습니다.

그리고, 사실 이곳에서 살펴본 것처럼, 엑셀은 디버깅이 크게 필요없습니다. 보시는 것처럼, 엑셀은 VBA코드를 작성하면서 동시에 결과를 즉시 눈으로 보고 확인하기 때문에 바로 코드를 고칠 수 있습니다.

뿐만 아니라, 대부분 프로그램 코드를 짧게 만들 수 있기에 프로그램 단계별로 디버깅할 필요가 없습니다.

어째든 다음 회차에 질문자의 두번째 조건과 디버깅에 대해서 알아보겠습니다.

(엑셀 파일 첨부하지 않습니다. 직접 타이핑해서 연습해 보세요)

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )
  • ?
    슈슈 2024.01.10 10:41

    Dos라는 말을 오랜만에 들어보네요...
    저 어렸을때 형님이 Dos 게임을 자주하곤 했는데,,,


    엑셀을 익히기 위해 노력하셨던 선배님이 멋집니다.


  1. 왕 초보용 엑셀 매크로(VBA) 배우기 - 1 (가장 중요한 3가지 기억하기)

  2. 왕 초보용 엑셀 매크로(VBA) 배우기 - 2 (중복 행 찾기 1/4)

  3. 왕 초보용 엑셀 매크로(VBA) 배우기 - 3 (중복 행 찾기 2/4)

  4. 왕 초보용 엑셀 매크로(VBA) 배우기 - 4 (중복 행 찾기 3/4)

  5. 왕 초보용 엑셀 매크로(VBA) 배우기 - 5 (중복 행 찾기 4/4)

  6. 왕 초보용 엑셀 매크로(VBA) 배우기 - 6 (매일 10페이지 책읽기 프로그램 1/6)

  7. 왕 초보용 엑셀 매크로(VBA) 배우기 - 7 (매일 10페이지 책읽기 프로그램 2/6)

  8. 왕 초보용 엑셀 매크로(VBA) 배우기 - 8 (매일 10페이지 책읽기 프로그램 3/6)

  9. 왕 초보용 엑셀 매크로(VBA) 배우기 - 9 (매일 10페이지 책읽기 프로그램 4/6)

  10. 왕 초보용 엑셀 매크로(VBA) 배우기 - 10 (매일 10페이지 책읽기 프로그램 5/6)

  11. 왕 초보용 엑셀 매크로(VBA) 배우기 - 11 (매일 10페이지 책읽기 프로그램 6/6)

  12. 왕 초보용 엑셀 매크로(VBA) 배우기 - 12 (공백 행 일괄 삭제하기)

  13. 왕 초보용 엑셀 매크로(VBA) 배우기 - 13 (문자 + 숫자 정렬)

Board Pagination Prev 1 Next
/ 1

LOGIN

SEARCH

MENU NAVIGATION