- 최초 작성일: 2000-06-08
- 최종 수정일: 2026-09-30
- 조회수: 39 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 처음 만들어보는 UserForm
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
지난 시간에 UserForm의 기본적인 사용 방법, 작성 순서, 컨트롤들의 특징 등에 대해 자세히 설명을 드렸습니다. 이번 시간에는 실제로 어떻게 유저폼을 만드는지 천천히 한 단계씩, Step by Step으로 설명 드리겠습니다. 공짜지만 어디에서도 볼 수 없는 명강의니까 정신 바짝차리고 따라오시기 바랍니다. (잘 나가다가 또 건방을 떨어요!@#$%^&)
일단 위의 버튼을 눌러서 오늘 만들어 볼 프로그램을 살펴보고 오시기 바랍니다. 위와 같은 컨트롤을 뭐라 한다고 했는지 기억이 나시는지…
그렇지요! 명령 단추 즉, 커맨드 버튼(CommandButton)입니다.
자, 프로그램을 실행시켜 보셨습니까? 어떻습니까? 아주 간단하지만 잘 작동되지요? 잘 활용하면 아주 멋진 것을 만들어 낼 수 있을 것 같은 생각이 팍!!! 들지 않으시는지… 지금부터 설명드릴 내용은 모든 유저폼(다이얼로그 박스)을 만드는 가장 기본이 되는 중요한 것입니다. 순서대로 잘 정리하시면서 따라해 보시기 바랍니다.
처음 만들어보는 UserForm
핵심 요약: UserForm 만들기 기본 흐름
UserForm은 삽입, Caption 변경, 컨트롤 추가와 속성 설정, 화면 표시 순서로 만듭니다. 이 흐름이 모든 대화상자의 기본입니다.
- 1단계: VB Editor에서 사용자 정의 폼을 삽입하고 Caption을 바꿉니다.
- 2단계: 컨트롤을 추가하고 Name, TabIndex 등 속성을 지정합니다.
- 3단계: 워크시트 버튼에 UserForm1.Show를 연결해 띄웁니다.
Step 1: 유저폼(UserForm) 만들기
(1) VB Editor 실행하기
"도구-매크로-Visual Basic Editor" 메뉴 또는 Alt + F11 키를 눌러서 VB Editor를 실행시킵니다.
(2) 유저폼 삽입하기
(2) "프로젝트 탐색기 창"에서 작업하고자 하는 워크북(즉 엑셀파일)을 선택한 다음, "삽입-사용자 정의 폼" 메뉴를 선택합니다(표준 도구모음에 있는 "사용자 정의 폼 삽입" 아이콘을 클릭해도 됩니다. 만약 "프로젝트 탐색기 창"이 보이지 않는다면 Ctrl + R키를 누르시면 나타납니다.
(3) Caption 속성 바꾸기
"속성창"에서 유저폼의 Caption 속성을 바꿔 줍니다(만약 속성창이 안보이면 F4 키를 누르세요).
캡션 속성을 바꾸는 방법은 아래 그림과 같이 Caption 속성의 옆을 클릭한 다음, 직접 타이핑 하시면 됩니다. 여기서는 "UserForm 만들기"라고(따옴표 빼고) 입력했습니다.
만약 컨트롤을 추가하는 도중에 컨트롤 도구상자가 안 보이면 UserForm을 한 번 클릭하세요!!!
(4) Label 컨트롤 추가하기
Label 컨트롤을 추가시킨 후, 다음의 속성값을 위와 같은 방법으로 변경시킵니다.
| 속성 | 값 |
|---|---|
| Caption | 이름 입력란 |
| TabIndex | 0 |
탭인덱스 속성은 탭키를 눌렀을 때 커서가 이동하는 순서를 지정하는 속성입니다.
(5) 텍스트 상자 추가하기
텍스트 상자 컨트롤을 하나 추가하고 아래와 같이 각 속성값을 바꾸어 줍니다.
| 속성 | 값 |
|---|---|
| Name | txtName |
| TabIndex | 1 |
이처럼 추가한 컨트롤(들)에 대해 의미있는 이름을 부여해 주는 것은 매우 좋은 습관입니다. 나중에 코드를 짤 때 편리하므로 꼭 몸에 붙이시기 바랍니다.
(6) 프레임 추가하기
프레임 컨트롤을 하나 추가한 다음, 속성값을 변경합니다.
| 속성 | 값 |
|---|---|
| Caption | 성별 선택 |
| TabIndex | 2 |
(7) 옵션 단추 추가하기 (남성)
(6)에서 만든 프레임 내부에 옵션 단추를 하나 만들어 넣고 속성값을 아래와 같이 변경합니다.
| 속성 | 값 |
|---|---|
| Caption | 남성 |
| Name | optMale |
| TabIndex | 0 |
(8) 옵션 단추 추가하기 (여성)
그 아래에다가 또 하나의 옵션 단추를 추가하고 속성값을 바꾸어 줍니다.
| 속성 | 값 |
|---|---|
| Caption | 여성 |
| Name | optFemale |
| TabIndex | 1 |
(9) 옵션 단추 추가하기 (미상)
또 그 밑에 옵션 단추를 하나 더 추가하고 속성값을 바꾸어 줍니다.
| 속성 | 값 |
|---|---|
| Caption | 미상 |
| Name | optUnknown |
| TabIndex | 2 |
| Value | True |
Value 속성을 True로 지정해 주면 유저폼이 뜰 때, 디폴트 값으로 이 항목에 체크표시가 됩니다.
(10) 명령 단추 추가하기 (OK)
이번에는 프레임의 바깥에 명령 단추(CommandButton)를 하나 추가하고 속성값을 변경합니다.
| 속성 | 값 |
|---|---|
| Accelerator | O |
| Caption | OK |
| Default | True |
| Name | btnOK |
| TabIndex | 3 |
Accelerator 속성은 유저폼 내 컨트롤의 단축키를 설정하는 속성입니다.
(11) 명령 단추 추가하기 (Cancel)
그 밑에 명령 단추를 하나 더 추가하고 속성값을 변경시킵니다.
| 속성 | 값 |
|---|---|
| Accelerator | C |
| Caption | Cancel |
| Name | btnCancel |
| TabIndex | 4 |
Step 2: 유저폼 Display 해 보기
- 워크시트(VB Editor가 아님!)로 돌아와서 명령 단추(CommandButton)를 임의의 위치에 하나 만듭니다.
- 그러면 "매크로 지정" 대화상자가 나타나는데 여기서 "새로 만들기" 버튼을 클릭합니다.
- VBA 모듈이 나타나면 아래와 같이 입력을 합니다.
Sub Button1_Click()
UserForm1.Show
End Sub
참고: 최근 버전의 Excel에서 워크시트에 버튼을 만들려면 [개발 도구] 탭 → [삽입] → [양식 컨트롤]의 [단추]를 선택하시면 됩니다. [개발 도구] 탭이 보이지 않으면 [파일-옵션-리본 사용자 지정]에서 체크하세요. 그리고 통합 문서를 저장할 때는 매크로 사용 통합 문서(*.xlsm) 형식으로 저장해야 코드가 보존됩니다.
이제 다시 워크시트로 돌아와서 방금 만든 버튼을 클릭해 보세요. 지금까지 힘들게 만들었던 대화상자가 화면에 딱 나타나지요?(신기한지고!!!)
그렇지만 아직까지는 화면에 유저폼이 나타나는 것 말고는 아무런 작동도 하지 않을 것입니다. 당연히 그렇겠지요? 아직은 어떤 다른 동작명령도 컴퓨터(VBA)에게 내리지 않았으니까요! 단 한가지 유저폼을 닫으시려면 폼 우측 상단의 "X" 아이콘을 클릭하면 됩니다.
Step 3: 이벤트 핸들러 프로시저 작성하기
이 부분은 프로그래밍에 관련된 사항이라 얘기가 좀 길어질 것 같습니다. 해서 이번 시간은 여기서 설명을 접어야 겠습니다. 오늘 강좌파일은 버리지 말고 잘 보관해 두시기 바랍니다. 유저폼을 만들고, 컨트롤을 추가하는 가장 기본이 되는 사항이므로 필히 Flow를 이해하시기 바랍니다.
마무리
여기서 우리는 왜 그냥 BASIC이 아닌 Visual Basic 이라고 부르는지 그 이유를 알 수 있습니다. 그저 마우스로 컨트롤을 선택하고, 몇번 끌기만 했는데 다양한 컨트롤들이 저절로 화면상에 비주얼하게 나타났지요? 그래서 비주얼 베이직이라고 합니다.
DOS 시절에는 상상조차 할 수 없었던 일입니다. 위에서 만든 이런 단순한 유저폼을 하나 만들려고 해도 골치아픈 좌표계산서 부터 각종 디자인 등 수십~수백 라인의 코딩을 해 주어야 했습니다.
제가 처음으로 접한 프로그래밍 랭귀지가 베이직이었고, 그 다음에 포트란, 코볼, 클리퍼 등을 접해 보았고 C랭귀지도 약간(진짜 약간) 살펴 보았는데 그 당시에는 문자 그대로 꿈도 꾸지못할 그런 작업들입니다(C 랭귀지의 경우 지금은 Visual C가 나와서 양상은 좀 다릅니다만…)
지금 여러분은 엄청나게 좋아진 환경(개발툴, 교재 등…) 속에서 배우시는 것이니 만큼 열심히들 하시기 바랍니다.
다음 시간에 이어집니다…
정리 — UserForm 만들기 컨트롤 속성 요약
| 컨트롤 | Name | 주요 속성 |
|---|---|---|
| Label | (기본값) | Caption = 이름 입력란, TabIndex = 0 |
| TextBox | txtName | TabIndex = 1 |
| Frame | (기본값) | Caption = 성별 선택, TabIndex = 2 |
| OptionButton | optMale, optFemale, optUnknown | Caption, TabIndex, Value(미상만 True) |
| CommandButton | btnOK, btnCancel | Accelerator, Caption, Default, TabIndex |
자주 묻는 질문 (FAQ)
Q1. TabIndex 속성은 무엇인가요?
탭 키를 눌렀을 때 커서가 이동하는 순서를 지정하는 속성입니다.
Q2. Accelerator 속성은 무엇인가요?
유저폼 내 컨트롤의 단축키를 설정하는 속성입니다.
Q3. 컨트롤에 의미 있는 이름을 붙이는 이유는 무엇인가요?
나중에 코드를 작성할 때 어떤 컨트롤인지 알아보기 쉬워 편리하기 때문입니다.
마치며
이벤트 핸들러 프로시저는 다음 시간에 이어서 설명드립니다. 오늘 만든 파일은 잘 보관해 두시기 바랍니다.