엑셀 VBA 매크로 만들기 - egsel VBA maekeulo mandeulgi

0. 엑셀에서 매크로 처음 시작하기

'파일' > '옵션' > '리본 사용자 지정' > '개발도구'에 체크

엑셀 VBA 매크로 만들기 - egsel VBA maekeulo mandeulgi

1. 메크로 만들기

  2010버전에서 상단의 '개발도구' > '메크로' 버튼을 누른다.  

 매크로 창이 뜨면, 본인이 원하는 매크로 이름을 적고( 숫자로 시작하면 안됨) '만들기' 버튼을 눌러 매트로를 생성한다.

 그럼 VBA모드로 넘어가는 것을 볼 수 있다.

 앞으로Alt + F11을 누르면 엑셀과 VBA모드를 자유롭게 전환할 수 있다.

2. VBA 시작하기

 VBA모드에서 왼쪽 프로젝트 리스트를 보면

  •  Microsoft Excel 개체
  •  폼
  •  모듈

 3가지 폴더가 존재하는 것을 발견할 수 있다.

 처음은 모듈 폴더 안의 Module 1이라는 이름으로 시작하게 될 것이다.

 모듈은 아래와 같은 코드로 되어 있을 것이며

     Sub 매크로이름_Click()

     End Sub

이 안에 코드를 넣어 VBA를 사용할 수 있다.

3. 폼을 만들어 프로그래밍 하기
 

 ㄱ. 상단  '삽입' > '사용자 정의 폼'을 눌러 폼(윈도우 창)을 생성한다.

 ㄴ. 왼쪽 프로젝트 리스트의 폼 폴더 안에 새로 생긴 폼(UserForm1)을 더블클릭하면 프로젝트 리스트 아래에 속성창이 뜨는데, 이 곳에서 창의 이름 및 크기 등을 설정 할 수 있다.

 ㄷ. 사용자가 엑셀에서 버튼을 눌러 폼이 바로 보이게 하기위해선

     Sub 매크로이름_Click()

           UserForm1.Show

     End Sub

이와 같이 설정을 해줘야 한다.

4. 엑셀에서 만든 버튼을 폼과 연동하기

 ㄱ. 엑셀로 돌아와(Alt + F11) 상단의 '개발도구' > '삽입' > '단추' 버튼을 누른다.

       그리고 엑셀 창에 버튼을 삽입하고 싶은 곳을 클릭하면 '매크로 지정'이라는 창이 나오고 매크로를 선택할 수 있다.

 

  ㄴ. 아까 만든 매크로를 선택 후  하단의 '확인' 버튼을 누른다.

        이제 버튼을 누르면 폼이 열리는 것을 확인할 수 있다.

5. VBA 프로그램 짜기 

  VBA 모드에서는 폼을 디자인 할 수 있다. 

  도구상자를 이용해 버튼 및 텍스트 입력창 등을 만들 수 있으며, 만든 버튼을 더블클릭하면 프로그램 코드를 입력할 수 있는 창으로 전환한다.

  (플레쉬 액션 스크립트와 비슷한게 많다.)

 이제부터 비주얼베이직이니 비주얼베이직 관련 함수를 찾아 공부하도록. 필자도 저번 주에 VBA 처음 접해봤을 뿐이다.

6. 기타(매모)  - (영어단어 시험지 만들기 매크로를 만들면서 생긴 노하우일 뿐이지 최선의 방법이 아닐 수 있다. )
 

 ㄱ. 메시지 박스 출력

 ㄴ. 생성자가 없어 폼이 생성되자 마자 변수를 어떻게 초기화 시키는가?

     > 가장 먼저 실행되는 것이 모듈이므로 모듈창에서 다음과 같이 입력하면 된다.

     > ' 는 주석이다.

     Sub 매크로이름_Click()

          UserForm1.OptionButtion1.Enabled = False ' 버튼 비활성화 초기화

          UserForm1.변수이름  = 값  '변수 초기화

          UserForm1.Show ' 이건 아까 위에서 만든거

     End Sub

 ㄷ. 전역변수 생성법

 > 상단에 다음과 같이 입력하면 된다.

     Option Explicit
          Dim 변수명1 As Integer

          Dim 변수명2 As Boolean

          Dim 변수명3 As String

ㄹ. '닫기' 버튼 만들기

     Private Sub CommandButton1_Click()
          Unload UserForm1
     End Sub

액셀 제어 방법은

> [VBA] 엑셀 매크로(2/3) - 엑셀 제어하기
> [VBA] 엑셀 매크로(3/3) - VBA 주요문법

VBA 와 엑셀 시트간의 연계를 위한 매크로 실행 버튼은 VBA 작업에 있어서 가장 기본이 됩니다. 직접 만든 소스를 실행하는 방법 중 하나이기 때문입니다. 오늘은 개발 도구에서 제공하는 ActiveX 컨트롤의 버튼을 추가해서 직접 만든 매크로 함수가 실행될 수 있도록 연결시켜 보겠습니다.

엑셀 VBA 매크로 만들기 - egsel VBA maekeulo mandeulgi

먼저 매크로 관련 작업을 위해서는 [개발 도구]탭이 화면에 나와 있어야 합니다. 처음 엑셀을 설치하고 그 이후에 매크로 관련 작업을 한 적이 없다면 탭이 없을 겁니다.

엑셀 VBA 매크로 만들기 - egsel VBA maekeulo mandeulgi

개발 도구 탭을 추가하기 위해 [파일] > [옵션]메뉴를 선택해서 엑셀 옵션 대화상자를 띄웁니다

엑셀 옵션 대화상자의 왼쪽 메뉴 목록에서 [리본 사용자 지정]을 선택합니다. 오른쪽 리본 메뉴 목록에서 [개발 도구]를 체크합니다. 그럼 화면에 [개발 도구]탭이 나타납니다

다시 화면으로 돌아가서 다시 나타난 [개발 도구]탭으로 이동합니다. 버튼을 추가하기 위해 삽입 리본 메뉴를 클릭합니다. 그리고 ActiveX 컨트롤 목록에 버튼 아이콘을 클릭해서 화면에 추가합니다

버튼 이벤트에 의해서 실행되는 함수는 자동으로 생성이 가능합니다. 버튼 컨트롤에서 오른 마우스를 눌러 [코드 보기]메뉴를 선택합니다

그럼 버튼 이름과 이벤트 명을 조합해서 자동으로 함수를 만들게 됩니다. 그림에서처럼 CommandButton1_Click() 함수가 그것입니다. 내부에 자신이 원하는 소스를 구현하시면 됩니다. 저는 함수 실행 테스트를 위해서 메시지 박스 실행을 위한 MsgBox 함수를 구현하였습니다

그런데 버튼을 클릭했는데 실행이 되지 않고 선택만 됩니다. 현재 상태가 디자인 모드로 설정이 되어 있어서 입니다. 디자인 모드를 해제해야 버튼이 클릭됩니다. 상단에 디자인 모드 리본 메뉴를 클릭해서 해제하고 버튼을 클릭하면 소스가 실행되겠죠

디자인 모드를 해제하고 버튼을 클릭합니다. CommandButton1_Click() 함수에 추가한 MsgBox 함수가 실행되면서 메시지 박스를 출력하였습니다. 이제 버튼을 추가해서 VBA 코드를 어떻게 실행해야 할지 감이 오시죠