스킬캠퍼스

오늘 끝나면

이벤트와 폼

  • 이벤트와 폼의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 이벤트와이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

버튼·UserForm — 클릭으로 실행 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

엑셀 VBA · 07

이벤트와

지금까지 매크로는 직접 실행 버튼으로 돌렸다.
이제 버튼 클릭이나 시트 변경 같은 사건에 코드를 매단다.
사용자는 버튼만 누르면 된다. 이것이 이벤트와 폼이다.

P.01엑셀 VBA · 07

이벤트 = 무슨 일이 일어났을 때

이벤트는 “무슨 일이 일어났다”는 신호다.
버튼 클릭, 셀 값 변경, 시트 열기가 전부 이벤트다.

지금까지는 Sub를 만들고 F5나 매크로 목록에서 직접 굴렸다.
이벤트를 쓰면 사람이 어떤 행동을 한 그 순간에 코드가 알아서 깬다.

엑셀은 사건마다 정해진 이름의 이벤트 프로시저를 부른다.
시트 셀이 바뀌면 Worksheet_Change가 불리고, 통합문서를 열면 Workbook_Open이 불린다.
그 이름의 Sub에 코드를 적어두면 그 일이 날 때마다 실행된다.

사건이 코드를 깨운다
사건 → 깨어나는 코드
사건(이벤트)불리는 프로시저
버튼 클릭Button_Click가장 흔한 이벤트
셀 값 변경Worksheet_Change값이 바뀐 순간
통합문서 열기Workbook_Open파일을 열 때
시트 선택Worksheet_Activate탭을 누를 때
그 이름의 Sub에 코드를 적어두면 그 일이 날 때마다 실행된다
P.02엑셀 VBA · 07

버튼에 매크로를 연결한다

가장 흔한 이벤트는 버튼 클릭이다.
시트에 버튼을 하나 놓고, 거기에 매크로를 연결한다.

엑셀에는 두 종류 버튼이 있다.
양식 컨트롤 버튼은 우클릭한 뒤 “매크로 지정”에서 원하는 Sub 이름을 골라 붙인다.
ActiveX 버튼은 더블클릭하면 CommandButton1_Click 이벤트 Sub가 자동으로 생긴다.

연결만 해두면 그 다음은 단순하다.
버튼을 누르는 순간 Click 이벤트가 발생하고, 매달린 Sub가 처음부터 끝까지 한 번 돈다.
매크로 목록을 열 필요도 없다. 클릭 한 번이 곧 실행이다.

버튼 클릭 → 연결된 Sub 실행
버튼 ↔ 매크로 연결
[ 보고서 만들기 ]시트 위 버튼
우클릭 → 매크로 지정Click 이벤트로 연결
연결된 매크로
Sub MakeReport()
  Range("A1") = "완료"
  MsgBox "보고서 생성"
End Sub

버튼 누름 = Click 발생 = MakeReport 실행

P.03엑셀 VBA · 07

직접 눌러 보는 버튼 이벤트

버튼 셋이 각자 다른 Sub에 연결돼 있다.

더하기PlusOne(), 두 배Double(), 초기화Reset()에 매달려 있다.
버튼을 누르면 그 버튼의 Click 이벤트가 연결된 Sub를 불러 셀 A1을 바꾼다.

아래 로그를 본다.
plus_Click → PlusOne()처럼 어떤 사건이 어떤 매크로를 깨웠는지 한 줄로 찍힌다.
사건이 연결된 프로시저를 부르고, 프로시저가 결과를 낸다.

클릭 = 이벤트 · 연결된 Sub가 셀을 바꿈
버튼 이벤트 · 클릭하면 매크로가 돈다
시트, 셀 A1
A1
3
버튼, 눌러 본다 (각자 다른 Sub에 연결)
PlusOne()
Double()
Reset()
실행 로그, 이벤트가 부른 매크로

버튼을 누르면 그 버튼의 Click 이벤트가 연결된 Sub를 불러 A1을 바꾼다.

클릭 = 이벤트 · 연결된 Sub = 매크로 · 셀 변화 = 결과

P.04엑셀 VBA · 07

UserForm으로 입력 UI를 띄운다

버튼만으로 부족할 때가 있다.
이름이나 수량, 날짜를 받아야 하면 UserForm을 띄운다.

UserForm은 시트 위에 뜨는 작은 입력 창이다.
텍스트 상자(TextBox), 목록(ComboBox), 버튼(CommandButton)을 끌어다 붙여 만든다.
코드에서 UserForm1.Show로 화면에 띄운다.

확인 버튼의 Click 이벤트 안에서 입력값을 읽어 셀에 쓴다.
예를 들면 Range("A1").Value = TextBox1.Value처럼 쓴다.
폼은 결국 예쁜 입력 칸에 버튼 이벤트를 더한 것이다. 새 문법이 아니라 지금 배운 이벤트의 응용이다.

폼에서 입력받아 시트로 보낸다
UserForm, 입력 창
주문 입력×
TextBox1 · 품목
연필
TextBox2 · 수량
12
확인 Click 이벤트
Range("A1") = TextBox1.Value
Range("B1") = TextBox2.Value

폼 = 입력 칸 + 버튼 이벤트. 새 문법이 아니다

P.05엑셀 VBA · 07

사용자는 클릭만, 코드는 알아서

이벤트와 폼의 목적은 하나다.
코드를 모르는 사람도 버튼만 눌러 매크로를 굴리게 하는 것이다.

나만 쓰는 매크로는 F5로 돌려도 된다.
하지만 동료에게 넘길 자동화라면 “여기 버튼 누르세요” 한마디로 끝나야 한다.
버튼과 폼이 그 다리다. 안쪽의 복잡한 Sub는 숨고, 밖에는 버튼만 보인다.

정리하면 사건에 코드를 매다는 게 이벤트, 입력을 받는 창이 폼이다.

Q. 버튼을 누르면 매크로가 도는 원리는? (셀이 매크로를 호출 · 클릭 이벤트에 코드 연결 · 엑셀이 자동 추측 · F5가 눌림)정답은 클릭 이벤트에 코드 연결이다.
버튼을 누르면 Click 이벤트가 발생하고, 거기 연결해 둔 Sub(매크로)가 실행된다.
엑셀이 알아서 추측하는 게 아니라, 우리가 미리 그 버튼의 이벤트에 매크로를 매달아 둔 것이다.
사건이 연결된 프로시저를 부르고 결과를 낸다. 이게 이벤트 실행의 전부다.
직접 실행 vs 이벤트 자동 실행
직접 실행 vs 이벤트
직접 실행
개발 탭 열기
매크로 목록
고르고 실행

코드 아는 사람용

이벤트 실행
[ 버튼 ]
Click 이벤트 발생
매크로 자동 실행

누구나 클릭 한 번

3줄 요약

  1. 1버튼·UserForm — 클릭으로 실행
  2. 2이벤트와 폼은 매크로 → 변수·셀 → 조건·반복 → 폼 → 자동화 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

이벤트와

버튼·UserForm — 클릭으로 실행

매크로

기록하거나 작성해 실행하는 자동화 코드

Sub

실행 단위가 되는 프로시저