안녕하세요.
엑셀에는 무한한 기능이 숨겨져 있습니다.
단순히 테이블 만들어서 함수로 계산하고 차트를 그리는 것 뿐만 아니라, 인터넷 처럼 꾸밀 수도 있습니다.
바로 사용자 정의 폼을 이용하는 것인데요.
이 블로그만으로도 사용자 정의 폼을 잘 활용하는 방법을 알아보도록 하겠습니다.
좀 길더라도 끝까지 한 번 따라해보시면 금방 하실 겁니다.
메뉴의 개발 도구에 있는 Visual Basic을 실행합니다.
메뉴에 개발 도구가 보이지 않으시면, 아래 블로그를 참고하여 나타나게 하시면 됩니다.
https://shareinfomation.tistory.com/494
Microsoft Visual Basic for Applications 메뉴에 있는 삽입을 누르신 후, 사용자 정의 폼을 선택합니다.
사용자 정의 폼을 실행하면 위와 같은 그림으로 UserForm이 생성되고, 도구 상자가 나타나게 됩니다.
점들이 있는 것을 보니까 뭔가 규칙적으로 배열을 할 수도 있겠네요.
프로젝트 - VBAProject에서 가장 왼쪽에 있는 것을 선택하면 기존 매크로, VBA 입력처럼 매뉴얼로 입력하는 것으로 전환됩니다.
다시 UserForm으로 전환하려면 프로젝트 - VBAProject에서 두번째 아이콘을 선택하시면 됩니다 (위 그림의 빨간색 박스).
도구 상자가 있는데요.
도구 상자에 있는 아이콘의 의미에 대해서 알아보겠습니다.
선택하는 아이콘 입니다.
레이블 (Labrl) : 폼에 문자열을 표시할 때 사용할 수 있습니다.
텍스트 상자 (TextBox) : 폼에 값을 입력할 때 사용할 수 있습니다.
콤보 상자 (ComboBox) : 텍스트 상자와 목록 상자가 접목된 형태로, 여러 개의 항목 중 하나를 선택하거나 값을 입력할 때 사용할 수 있습니다.
목록 상자 (ListBox) : 선택할 수 있는 리스트가 표시되며, 이 중 하나 또는 여러개를 선택할 수 있습니다.
확인란 (CheckBox) : 폼에서 하나의 옵션에 대한 선택 여부를 결정할 때 사용할 수 있습니다.
옵션 단추 (OptionButton) : 폼에서 여러 개의 옵션 중 한 개를 선택할 수 있습니다.
토글 단추 (ToggleButton) : 선택 여부를 누름/안누름으로 구분하고자 할 때 사용할 수 있습니다.
프레임 (Frame) : 그룹을 지정할 때 사용할 수 있습니다.
명령 단추 (CommandButton) : 버튼을 클릭해 프로시저를 실행할 때 사용할 수 있습니다.
연속 탭 (TabStrip) : 탭으로 페이지를 구분할 때 사용할 수 있습니다.
다중 페이지 (MultiPage) : 여러 개의 페이지를 탭으로 구분하는 대화상자를 만들 때 사용할 수 있습니다.
스크롤 막대 (ScrollBar) : 텍스트 상자 컨트롤 등과 함께 넓은 범위의 값을 조정할 때 사용할 수 있습니다.
스핀 단추 (SpinButton) : 스크롤 막대와 비슷하지만, 택스트 상자 컨트롤 등과 함께 짧은 범위의 값을 조정할 때 사용할 수 있습니다.
이미지 (Image) : 폼에 그림을 표시할 때 사용할 수 있습니다.
RefEdit : 폼에서 워크시트 내 작업 범위를 선택할 때 사용할 수 있습니다.
간단한 폼을 하나 만들어 보도록 하겠습니다.
도구 상자에서 레이블을 선택합니다.
적당한 위치에 레이블을 위치시킵니다.
Label1을 선택하면 커서가 깜빡이는데요, Label1을 이름으로 변경합니다.
도구 상자에서 텍스트 상자를 선택합니다.
텍스트 상자를 이름 오른쪽에 위치 시켜 줍니다.
크기도 마음대로 조절해보세요.
동일한 방식으로 레이블을 이용하여 성별을 추가합니다.
도구 상자의 옵션 단추를 선택합니다.
성별 오른쪽에 위치시키고 내용을 남성으로 수정합니다.
동일한 방법으로 옵션 단추를 이용하여 여성을 추가합니다.
이제 이름을 입력하고 성별을 선택할 수 있는 간단한 사용자 정의 폼을 만들었습니다.
생각보다 간단하죠?
속성에 대해서 알아보겠습니다.
폼에서 마우스 우클릭한 후 속성을 선택합니다.
사실 속성은 VBA 왼쪽 아래에 보입니다.
속성을 잘 이해하면, 폼을 더 효과적으로 활용할 수 있습니다.
속성이 있다는 것을 알아두시고요, 아래에 상황에 따라서 변경하는 것에 대해서 말씀드리겠습니다.
F5를 눌러서 폼을 실행해보면, 위와 같이 작성한 그림이 깔끔하게 뜹니다.
깜빡하고 확인/취소 버튼을 추가하지 않았네요.
이런 폼을 사용하는 가장 큰 이유는 변수를 입력하고 그에 따른 데이터를 수집 혹은 불러오기 위해서 사용합니다.
UserForm을 위 그림처럼 조금 작게 해봅니다.
도구 상자에서 명령 단추를 선택한 후, UserForm에 위치 시킵니다.
그리고 명령 단추를 클릭하여 실행을 입력합니다.
같은 방식으로 실행 오른쪽에 닫기 명령 단추를 추가합니다.
실행은 실행을 할 수 있게, 닫기는 창을 닫을 수 있게 설정을 해야 합니다.
저렇게만 적으면 엑셀은 무엇을 어떻게 하는지 자동으로 이해하지 않습니다.
프로젝트 - VBAProject에서 가장 왼쪽에 있는 아이콘을 클릭 합니다.
UserForm이라고 적혀있는 것을 선택한 후, CommandButton1을 선택합니다.
CommandButton1_Click 프로시저에 위와 같이 입력합니다.
Private Sub CommandButton1_Click()
CommandButton2.Enabled = True
End Sub
동일한 방식으로 CommandButton2_Click에 위와 같이 입력합니다.
Private Sub CommandButton2_Click()
Unload Me
End Sub
옵션 단추를 비활성화 할 수도 있습니다.
프로젝트 - VBAProject에서 두번째 아이콘을 선택하여 폼을 볼 수 있게 합니다.
닫기를 선택한 후, 왼쪽 아래 속성의 Enabled를 False로 변경합니다.
이렇게 하면 닫기의 글씨가 검정색에서 배경색으로 바뀌면서 나중에 선택을 할 수 없게 만듭니다.
F5를 눌러서 실행해보면 위와 같은 그림으로 폼이 실행됩니다.
실행을 한 번 눌러보면, 닫기 버튼이 활성화가 됩니다.
왜냐고요?
바로 CommandButton1_Click 프로시저에서 CommandButton2.Enabled = True라고 설정했기 때문입니다.
아까 닫기 옵션 단추의 Enabled 설정을 False로 했는데, 실행을 하면 True로 바꾸라고 명령을 했기 때문입니다.
바로 이 점이 중요합니다.
옵션 단추를 눌렀을 때, 무엇을 어떻게 해야하는지는 이런식으로 입력하시는 겁니다.
폼을 사용하여 테이블을 만드는 것을 해보겠습니다.
아마 가장 쉽고 가장 많이 사용하시게 될 것 입니다.
엑셀에 위와 같은 테이블을 만듭니다.
메뉴의 삽입에서 사용자 정의 폼을 실행합니다.
UserForm에 위 그림과 같이 추가 합니다.
프로젝트 - VBAProject에서 왼쪽 아이콘을 선택한 후, CommandButton1을 선택합니다.
그리고 위와 같은 내용을 입력합니다.
Private Sub CommandButton1_Click()
Dim 입력위치 As Range
If Len(TextBox1.Value) > 0 Then
If Len(TextBox2.Value) > 0 Then
Set 입력위치 = Cells(Rows.Count, "B").End(xlUp).Offset(1)
With 입력위치
.Value = TextBox1.Value
.Offset(, 1).Value = TextBox2.Value
End With
End If
End If
End Sub
자, 이제 실행을 해볼까요?
F5를 눌러서 폼을 실행하면 엑셀에 위와 같은 사용자 정의 폼이 나타납니다.
UserForm의 고객사에 A사, 매출에 10억을 입력한 후, 입력 단추를 클릭합니다.
그러면 엑셀에 있는 테이블에 A사와 10억이 입력됩니다.
이런 키보드에서 계속 Tab을 눌러서 칸을 이동한 다음에, 값을 입력하면 엑셀 테이블에 계속 입력됩니다.
사실 엑셀을 잘 활용하는 분들은 이 방법이 더 어려울 수 있습니다.
하지만, 이렇게 폼을 사용하면 작업자의 실수가 줄어들고, 범용적으로 사용할 수 있는 엑셀 파일을 만들 수 있습니다.
궁금하신 내용은 댓글에 남겨주세요.
검색창에 '엑셀 매크로 정보공유소'를 검색해보세요.
'엑셀 정보' 카테고리의 다른 글
[엑셀 매크로/VBA] Inputbox 함수를 이용하여 데이터 및 값 입력/처리하기 (0) | 2019.12.07 |
---|---|
[엑셀 매크로/VBA] Msgbox 함수를 이용하여 메시지 박스를 꾸며보자 (0) | 2019.12.07 |
[엑셀 매크로/VBA] 차트 생성하기 / 차트 만들기 (5) | 2019.11.27 |
[엑셀 매크로/VBA] 매크로 포함된 파일 저장하기 (0) | 2019.11.27 |
[엑셀 매크로/VBA] 엑셀 파일을 열때 자동으로 실행되는 이벤트 만들기 (4) | 2019.11.26 |