본문 바로가기
생활속 소소한 팁

엑셀 VBA, 어렵지 않아요! 첫 번째 이야기: VBA 시작과 필수 개념 익히기

by ujuni 2024. 11. 12.
반응형

반복적인 엑셀 작업에 지치셨나요? 버튼 하나로 마법처럼 자동화할 수 있는 세상이 있습니다.

바로 VBA를 사용하는 방법이에요. 이걸 알면 엑셀에서 매일 반복하던 작업을 자동화하고, 훨씬 더 효율적으로 시간을 관리할 수 있습니다.

 

이번 블로그에서는 VBA의 기초부터 활용까지 대략적으로 알아보는 시간을 갖도록 하겠습니다. 

VBA를 사용하려면 어떤 메뉴를 통해 들어가야하는지, 또 어떻게 화면이 구성되어 있는지를 설명할 거예요.

[목차]
1. VBA 시작 준비 : 개발자 도구 탭을 켜야 한다고?
2. VBA의 요소 : 사용자 정의폼, 모듈, 시트/워크북 이벤트
3. 쉽게 가기 위한 치트키 : 매크로 기록기 / chatgpt

 


1. VBA  시작 준비 : 개발자 도구 탭을 켜야 한다고?

  엑셀에서 VBA를 활용하려면 먼저 개발자 도구 탭을 활성화해야 합니다.

  엑셀에서는 기본적으로 이 탭이 숨겨져 있는데요, 아주 간단한 설정만으로 탭을 켤 수 있습니다.

     1) 엑셀을 연 상태에서 상단 메뉴의 파일을 클릭합니다.

     2) 옵션을 선택하면 새로운 창이 뜨는데, 여기서 왼쪽 메뉴의 리본사용자 지정을 클릭하세요.

     3) 오른쪽 리스트에 있는 "리본 메뉴 사용자 지정"에서 개발자 체크박스를 선택하고 확인을 눌러주세요.

 

  이제 엑셀 상단에 개발자 도구라는 탭이 생겼을 거예요. 여기서 Visual Basic 버튼을 클릭하면 VBA 편집기가 열립니다.

  뭔가 전문가가 된 것 같은 느낌이 들지요 ㅋㅋ

 


2. VBA의 요소 : 사용자 정의 폼, 모듈, 시트/워크북 이벤트, 그리고 매크로 기록기

  VBA로 엑셀을 자동화할 때 알아두면 좋은 요소들이 있습니다. 제목에 나온 네 가지인데요. 상황별로 쓰임이 다르니 아래 설명을 참고해 주세요.

 

  1) 사용자 정의폼 (UserForm) : "엑셀에도 입력 창을 따로 만들 수 있다고?"

   다른 프로그램을 사용하다 보면 입력창이 뜰 때가 있죠?  엑셀에서도 이러한 창을 띄울 수가 있습니다.

   사용자 정의 폼은 엑셀에서 직접 입력 창을 만들어 데이터를 관리할 때 아주 유용합니다. 아래처럼 영수증 입력창을 만들 수도 있어요.

  ★ 예시 : 영수증 입력 자동화

     매일 여러 고객의 구매 데이터를 엑셀에 입력한다고 해요. 기존에는 각 항목을 직접 시트에 일일이 입력했다면, 이제는 사용자 정의 폼을 사용해 보세요. 폼에 날짜, 고객명, 품목, 수량, 가격 입력란을 만들어두고, 데이터를 채워 넣은 뒤 "확인"버튼을 클릭하면 자동으로 시트에 입력되도록 설정할 수 있습니다. 사용자가 각 셀을 찾아다니며 일일이 입력할 필요가 없어져 데이터 입력이 한결 수월해 지죠.

 

 

  2) 모듈(Moudule) : "자주 사용하는 코드를 여기에 저장해 두세요!"

   이것이 근본입니다. 모듈은 VBA에서 코드를 작성하는 기본 공간입니다. 자주 사용하는 코드나 함수를 모듈에 작성해 두면 모든 시트에서 불러 쓸 수 있어 편합니다. 자동화할 코드를 작성 후, 버튼 아이콘에 연결해 둬 실행시키거나, 단축키등을 통해 작동시킬 수 있죠.

  ★ 예시 :  대문자 자동 변환 코드

      고객 명단을 정리할 때, 이름이 모두 대문자로 되어야 한다고 가정해 볼게요. 매번 이름을 대문자로 바꾸려니 번거롭죠? 이때 VBA모듈에 아래와 같은 간단한 코드를 작성해 두면 클릭 한 번으로 전체 셀을 자동으로 대문자로 변환할 수 있습니다.

Sub ConvertToUpperCase()
  Dim cell As Range
  For Each cell In Selection
      cell.Value=UCAse(cell.value)
  Next cell
End sub

 

 

  3)  시트 또는 워크북 단위의 이벤트 : "시트에서 특정 동작이 자동으로 이루어지게 할 수 있다니!"

    모듈이 근본이었다면, 진정한 자동화는 이벤트를 통해 이루어지는 게 아닌가 싶습니다. 특정 버튼을 누르지 않아도 정해둔 규칙에 따라 자동으로 데이터를 가공/처리해 주는 것이죠. 

   엑셀시트에서 특정 동작이 발생할 때 자동으로 코드를 실행하도록 할 수 있습니다. "이벤트"라는 말 그대로 특정행동(예: 셀 클릭, 시트선택)을 트리거로 코드를 실행하는 기능이죠.

  ★ 예시 : 값 입력 시 셀 색상 자동 변경

        재고 관리 시트를 생각해 볼게요. 재고 수량을 확인할 때, 만약 수량이 기준보다 낮아지면 경고 색상으로 표시되면 훨씬 편리하겠죠? (물론 조건부서식으로도 구현가능하지만, 상황이 복잡해질수록 이벤트의 효용은 커집니다)

    VBA를 사용해 특정 셀에 재고 수량을 입력할 때마다 수량이 기준 이하로 떨어지면 자동으로 셀색상을 빨간색으로 바꾸도록 할 수 있습니다.


3. 쉽게 가기 위한 치트키 : 매크로 리록기 / chat gpt

 

 1) 매크로 기록기 : "코드를 모를 땐 엑셀이 대신 기록해 줘요"

    VBA의 입문 자라면 코드를 하나하나 작성하기 막막하죠. 이때 사용할 수 있는 꿀팁이 바로 매크로 기록기예요. 음성을 녹음하여 재생하듯, 녹음 버튼을 누른 뒤 작업하는 행동을 그대로 코드로 작성해 줍니다. 때문에 코드작성이 어려운 초보자들에게 유용하죠.

  ★ 예시 : 반복작업 자동화하기

     매일 거래데이터를 복사해 특정시트에 붙여 넣고, 다시 각 셀을 서식에 맞춰 변경하는 작업이 있나요? 기록기를 켠 상태에서 데이터 복사, 붙여 넣기, 서식 설정을 한 다음 매크로 기록기를 끄면, 방금 한 작업을 VBA코드로 기록해 줘요. 나중에 이 매크로를 실행하면 동일한 작업이 자동으로 수행됩니다.

 

 

  2) chatgpt : "아주아주 강력한 도구"

   아주 핫한 녀석이죠. 사실 이 친구한테 물어보면 웬만한 코드를 다 작성해 줍니다. 다만 내 요구사항을 적절하게 설명해 줘야 원하는 코드가 나옵니다. 잘 설명하는 게 관건이에요!! 원하는 기능이 복잡하고, 내 자료에 딱 맞도록 구현하려면 답변으로 내어준 코드를 참고하여 적당히 고쳐 쓸 줄 알아야 합니다.

 

 


 4. 마무리하며 : VBA를 합시다.

    사용하면 할수록 엑셀은 업무에 있어 참 편리한 도구이며, VBA는 날개를 달아주는 방법입니다.

    위에 설명했듯 chatgpt가 코드도 아주 잘 짜줍니다. 다만 오류가 있는 경우 이를 수정해야 하고, 내 자료에 적합하게 코드를 이식하려면 VBA의 기본적이 동작 원리정도를 알아야 해요.

   어렵지 않습니다. 앞으로 다음 편에서 조금씩 더 말씀드리도록 하겠습니다!!

   

  ※ 위에서 사용한 예시를 이해하기 쉽도록 간단히 작성하여 엑셀파일로 첨부하였습니다.

vba 예제.xlsm
0.02MB

 

 그럼 다음 글에서 좀더 살펴보시죠!!

 

2024.11.19 - [생활속 소소한 팁] - 엑셀 VBA 두번째 이야기 : 기초 모듈 작성법( 변수 / 셀 / 복붙 )

반응형