• 최초 작성일: 2000-06-08
  • 최종 수정일: 2026-09-30
  • 조회수: 39 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 처음 만들어보는 UserForm

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

지난 시간에 UserForm의 기본적인 사용 방법, 작성 순서, 컨트롤들의 특징 등에 대해 자세히 설명을 드렸습니다. 이번 시간에는 실제로 어떻게 유저폼을 만드는지 천천히 한 단계씩, Step by Step으로 설명 드리겠습니다. 공짜지만 어디에서도 볼 수 없는 명강의니까 정신 바짝차리고 따라오시기 바랍니다. (잘 나가다가 또 건방을 떨어요!@#$%^&)

일단 위의 버튼을 눌러서 오늘 만들어 볼 프로그램을 살펴보고 오시기 바랍니다. 위와 같은 컨트롤을 뭐라 한다고 했는지 기억이 나시는지…

그렇지요! 명령 단추 즉, 커맨드 버튼(CommandButton)입니다.

자, 프로그램을 실행시켜 보셨습니까? 어떻습니까? 아주 간단하지만 잘 작동되지요? 잘 활용하면 아주 멋진 것을 만들어 낼 수 있을 것 같은 생각이 팍!!! 들지 않으시는지… 지금부터 설명드릴 내용은 모든 유저폼(다이얼로그 박스)을 만드는 가장 기본이 되는 중요한 것입니다. 순서대로 잘 정리하시면서 따라해 보시기 바랍니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

처음 만들어보는 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 키를 누르세요).

UserForm1의 속성창에서 Caption 속성을 변경하는 화면
아이엑셀러

캡션 속성을 바꾸는 방법은 아래 그림과 같이 Caption 속성의 옆을 클릭한 다음, 직접 타이핑 하시면 됩니다. 여기서는 "UserForm 만들기"라고(따옴표 빼고) 입력했습니다.

만약 컨트롤을 추가하는 도중에 컨트롤 도구상자가 안 보이면 UserForm을 한 번 클릭하세요!!!

(4) Label 컨트롤 추가하기

Label 컨트롤을 추가시킨 후, 다음의 속성값을 위와 같은 방법으로 변경시킵니다.

속성값
Caption이름 입력란
TabIndex0

탭인덱스 속성은 탭키를 눌렀을 때 커서가 이동하는 순서를 지정하는 속성입니다.

(5) 텍스트 상자 추가하기

텍스트 상자 컨트롤을 하나 추가하고 아래와 같이 각 속성값을 바꾸어 줍니다.

속성값
NametxtName
TabIndex1

이처럼 추가한 컨트롤(들)에 대해 의미있는 이름을 부여해 주는 것은 매우 좋은 습관입니다. 나중에 코드를 짤 때 편리하므로 꼭 몸에 붙이시기 바랍니다.

(6) 프레임 추가하기

프레임 컨트롤을 하나 추가한 다음, 속성값을 변경합니다.

속성값
Caption성별 선택
TabIndex2

(7) 옵션 단추 추가하기 (남성)

(6)에서 만든 프레임 내부에 옵션 단추를 하나 만들어 넣고 속성값을 아래와 같이 변경합니다.

속성값
Caption남성
NameoptMale
TabIndex0

(8) 옵션 단추 추가하기 (여성)

그 아래에다가 또 하나의 옵션 단추를 추가하고 속성값을 바꾸어 줍니다.

속성값
Caption여성
NameoptFemale
TabIndex1

(9) 옵션 단추 추가하기 (미상)

또 그 밑에 옵션 단추를 하나 더 추가하고 속성값을 바꾸어 줍니다.

속성값
Caption미상
NameoptUnknown
TabIndex2
ValueTrue

Value 속성을 True로 지정해 주면 유저폼이 뜰 때, 디폴트 값으로 이 항목에 체크표시가 됩니다.

(10) 명령 단추 추가하기 (OK)

이번에는 프레임의 바깥에 명령 단추(CommandButton)를 하나 추가하고 속성값을 변경합니다.

속성값
AcceleratorO
CaptionOK
DefaultTrue
NamebtnOK
TabIndex3

Accelerator 속성은 유저폼 내 컨트롤의 단축키를 설정하는 속성입니다.

(11) 명령 단추 추가하기 (Cancel)

그 밑에 명령 단추를 하나 더 추가하고 속성값을 변경시킵니다.

속성값
AcceleratorC
CaptionCancel
NamebtnCancel
TabIndex4

Step 2: 유저폼 Display 해 보기

  1. 워크시트(VB Editor가 아님!)로 돌아와서 명령 단추(CommandButton)를 임의의 위치에 하나 만듭니다.
  2. 그러면 "매크로 지정" 대화상자가 나타나는데 여기서 "새로 만들기" 버튼을 클릭합니다.
  3. 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. 컨트롤에 의미 있는 이름을 붙이는 이유는 무엇인가요?

나중에 코드를 작성할 때 어떤 컨트롤인지 알아보기 쉬워 편리하기 때문입니다.

마치며

이벤트 핸들러 프로시저는 다음 시간에 이어서 설명드립니다. 오늘 만든 파일은 잘 보관해 두시기 바랍니다.