오늘 끝나면
이벤트와 폼
- ✓이벤트와 폼의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 이벤트와이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
버튼·UserForm — 클릭으로 실행 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
엑셀 VBA · 07
이벤트와
폼
지금까지 매크로는 직접 실행 버튼으로 돌렸음.
이제 버튼 클릭·시트 변경 같은 사건에 코드를 매달음.
사용자는 버튼만 누르면 됨. 그게 이벤트·폼임.
이벤트 = 무슨 일이 일어났을 때
이벤트는 “무슨 일이 일어났다”는 신호임.
버튼 클릭, 셀 값 변경, 시트 열기 — 전부 이벤트임.
지금까지는 Sub를 만들고 F5나 매크로 목록에서 직접 굴렸음.
이벤트를 쓰면 사람이 어떤 행동을 한 그 순간에 코드가 알아서 깸.
엑셀은 사건마다 정해진 이름의 이벤트 프로시저를 부름.
시트 셀이 바뀌면 Worksheet_Change, 통합문서를 열면 Workbook_Open.
그 이름의 Sub에 코드를 적어두면 그 일이 날 때마다 실행됨.
| 사건(이벤트) | 불리는 프로시저 |
|---|---|
| 버튼 클릭 | Button_Click가장 흔한 이벤트 |
| 셀 값 변경 | Worksheet_Change값이 바뀐 순간 |
| 통합문서 열기 | Workbook_Open파일을 열 때 |
| 시트 선택 | Worksheet_Activate탭을 누를 때 |
버튼에 매크로를 연결한다
가장 흔한 이벤트는 버튼 클릭임.
시트에 버튼을 하나 놓고, 거기에 매크로를 연결함.
엑셀에는 두 종류 버튼이 있음.
양식 컨트롤 버튼은 우클릭 → “매크로 지정”으로 원하는 Sub 이름을 골라 붙임.
ActiveX 버튼은 더블클릭하면 CommandButton1_Click 이벤트 Sub가 자동으로 생김.
연결만 해두면 그 다음은 단순함.
버튼을 누르는 순간 Click 이벤트가 발생하고, 매달린 Sub가 처음부터 끝까지 한 번 돎.
매크로 목록을 열 필요도 없음. 클릭 한 번이 곧 실행임.
Sub MakeReport()
Range("A1") = "완료"
MsgBox "보고서 생성"
End Sub버튼 누름 = Click 발생 = MakeReport 실행
직접 눌러 보는 버튼 이벤트
오른쪽에서 직접 해봄.
버튼 셋이 각자 다른 Sub에 연결돼 있음.
더하기는 PlusOne(), 두 배는 Double(), 초기화는 Reset()에 매달려 있음.
누르면 그 버튼의 Click 이벤트가 연결된 Sub를 불러 셀 A1을 바꿈.
아래 로그를 보셈.
plus_Click → PlusOne()처럼 어떤 사건이 어떤 매크로를 깨웠는지 한 줄로 찍힘.
이게 이벤트가 코드를 부르는 정확한 흐름임 / 사건 → 프로시저 → 결과.
버튼을 누르면 그 버튼의 Click 이벤트가 연결된 Sub를 불러 A1을 바꿈.
클릭 = 이벤트 · 연결된 Sub = 매크로 · 셀 변화 = 결과
UserForm — 입력 UI를 띄운다
버튼만으로 부족할 때가 있음.
이름·수량·날짜를 받아야 하면 UserForm을 띄움.
UserForm은 시트 위에 뜨는 작은 입력 창임.
텍스트 상자(TextBox), 목록(ComboBox), 버튼(CommandButton)을 끌어다 붙여 만듦.
코드에서 UserForm1.Show로 화면에 띄움.
확인 버튼의 Click 이벤트 안에서 입력값을 읽어 셀에 씀.
예: Range("A1").Value = TextBox1.Value.
폼은 결국 “예쁜 입력 칸 + 버튼 이벤트”임. 새 문법이 아니라 지금 배운 이벤트의 응용임.
Range("A1") = TextBox1.Value
Range("B1") = TextBox2.Value폼 = 입력 칸 + 버튼 이벤트. 새 문법 아님
사용자는 클릭만, 코드는 알아서
이벤트·폼의 목적은 하나임.
코드를 모르는 사람도 버튼만 눌러 매크로를 굴리게 하는 것임.
나만 쓰는 매크로는 F5로 돌려도 됨.
근데 동료에게 넘길 자동화라면 “여기 버튼 누르세요” 한마디로 끝나야 함.
버튼·폼이 그 다리임. 안쪽 복잡한 Sub는 숨고, 밖에는 버튼만 보임.
정리하면 — 사건에 코드를 매다는 게 이벤트, 입력을 받는 창이 폼임.
8강에서는 이 버튼 하나에 실전 보고서 생성 매크로를 통째로 연결함.
오늘 만든 “클릭 → 실행” 구조가 그 마지막 자동화의 손잡이임.
Q. 버튼을 누르면 매크로가 도는 원리는? (셀이 매크로를 호출 · 클릭 이벤트에 코드 연결 · 엑셀이 자동 추측 · F5가 눌림)
정답은 클릭 이벤트에 코드 연결임.버튼을 누르면 Click 이벤트가 발생하고, 거기 연결해 둔 Sub(매크로)가 실행됨.
엑셀이 알아서 추측하는 게 아니라, 우리가 미리 그 버튼의 이벤트에 매크로를 매달아 둔 것임.
사건 → 연결된 프로시저 → 결과 / 이게 이벤트 실행의 전부임.
코드 아는 사람용
누구나 클릭 한 번