EXCEL

[엑셀_VBA] (1/2)유저 폼(User Form)으로 셀에 값 입력

엑셀복지사 2021. 10. 5. 12:49
유저 폼(User Form)으로 셀에 값 입력.xlsm
0.02MB

VBA로 입력 창을 만들고, 응답된 내용을 셀에 입력하는 방법에 대해 알아보겠습니다.


1. 시트에 입력 양식 만들기

아래와 같이 시트에 값을 입력할 표를 만들어줍니다.
그리고 [삽입 > 도형]에서 사각형을 하나 만들고, [우클릭 > 텍스트 편집]으로 '입력하기'를 넣어줍니다.
(Alt를 누른 상태에서 도형의 크기를 조절하면, 셀의 크기에 딱 맞게 조절할 수 있습니다.)


2. 유저 폼(User Form) 생성하기

(※ 메뉴 상단에 개발도구 탭이 없는 경우에는, [파일 > 옵션 > 리본 사용자 지정 > 리본 메뉴 사용자 지정 > 기본 탭]에서 체크해주세요.)


[개발도구 > Visual Basic] 또는 Alt + F11을 눌러서 VBA 입력 화면으로 들어갑니다.
그러면 열려 있는 시트가 보이는데, 시트를 우클릭하고 [삽입 > 사용자 정의 폼]을 선택해줍니다.


그러면 아래와 같은 팝업 양식이 나타나고, 좌측에는 해당 양식의 속성들이 보이게 됩니다.


속성에서 Caption을 수정하면, 팝업 양식 상단의 텍스트가 변경됩니다.
'설문지' 라고 입력해봅시다.


3. 유저 폼 제작하기

유저 폼을 열면 '도구 상자' 창도 같이 열립니다.
(혹시 실수로 닫으셨다면 [보기 > 도구 상자] 메뉴에서 다시 열 수 있어요.)
도구 상자 각 버튼에 마우스를 올리고 있으면 어떤 기능인지 확인할 수 있습니다.

1) 이름 입력 양식

먼저, 레이블텍스트 상자이름 입력 양식을 만들어줍니다.
레이블의 'Caption' 속성에 "이름 : "이라고 입력해주면 폼에 반영됩니다.
Font 속성에서 원하는 글자체와 글자 크기, 굵기 설정 등이 가능하구요
'(이름)' 속성은 추후에 입력된 값을 셀에 입력할 때 사용될 예정입니다.
나중에 쉽게 불러오기 위해(기억하기 쉽게), 이름을 입력하는 텍스트 상자의 '(이름)'을 txt_name으로 변경하겠습니다.

2) 성별 입력 양식

다음으로, 레이블프레임, 옵션 단추성별 입력 양식을 만들어줍니다.
옵션 단추의 '(이름)' 역시, 추후 작업의 편의성을 위해 opt_men, opt_women로 각각 수정해줍니다.


3) 나이 입력 양식

다음은 레이블, 콤보 상자나이 입력 양식을 만들어줍니다.
이름은 cmb_age로 변경했습니다.


콤보 상자에 값을 넣으려면, 유저 폼이 열릴 때 콤보 상자에 목록을 생성하라는 명령어를 입력해야 합니다.

먼저, 유저 폼에서 [우클릭 > 코드 보기]를 클릭해줍니다. (또는 유저 폼 더블클릭)
(콤보상자 우클릭이 아닙니다!! 유저 폼 우클릭)


다음으로, 우측 상단의 박스를 클릭해서 'Initialize'를 선택해줍니다.


그리고 아래와 같이 코드를 입력해줍니다.
'Me'는 현재의 유저 폼을 의미하고, 'cmb_age'는 아까 설정했던 콤보 상자의 이름, 'AddItem'은 말 그대로 콤보 상자에 입력할 목록의 값을 의미합니다.
For ~ Next 문으로 좀 더 쉽게 목록을 입력할 수 있는데, 이 부분은 나중에 따로 포스팅을 올리겠습니다.

Private Sub UserForm_Initialize() Me.cmb_age.AddItem "1~10" Me.cmb_age.AddItem "11~20" Me.cmb_age.AddItem "21~30" Me.cmb_age.AddItem "31~40" Me.cmb_age.AddItem "41~50" Me.cmb_age.AddItem "51~60" Me.cmb_age.AddItem "61~70" Me.cmb_age.AddItem "71~80" Me.cmb_age.AddItem "81~90" Me.cmb_age.AddItem "91~100" End Sub

4) 선호 입력 양식

레이블, 확인란으로 선호 입력 양식을 만들어줍니다.
선호하는 식사의 종류를 샘플로 구성해 보았습니다.
이 부분의 이름은 그대로 두겠습니다.


분량 조절에 실패하여.. part 2로 이어집니다
https://excel-welfare.tistory.com/10