엑셀 Excel UserForm 에 멀티 페이지 구현을 위해 탭 추가하는 방법

엑셀(Excel)/VBA

엑셀 Excel UserForm 에 멀티 페이지 구현을 위해 탭 추가하는 방법

 

환경: Microsoft Excel 2013

 

오늘은 VBA 폼을 잘 다루기 위한 연습 문제입니다. 구현할 예제는 여러 탭으로 구성된 화면에서 입력한 데이터를 셀에 추가하는 것입니다. 탭은 옵션 대화상자를 구성할 때 많이 사용하는 컨트롤입니다. 오늘 학습할 내용은 2개의 탭 컨트롤의 차이점이 무엇이며 각 탭에 있는 컨트롤들을 어떻게 다루는지에 대한 것입니다.

 

탭 컨트롤은 2가지가 있습니다. 첫 번째 연속 탭은 모든 탭에 동일한 컨트롤이 들어갑니다. 하지만 다중 페이지는 각 탭 화면마다 컨트롤을 다르게 설정할 수 있습니다. 그래서 우리가 흔히 보는 옵션 창에 탭은 다중 페이지로 구현된 것입니다.

 


그림과 같이 다중 페이지로 구현한 탭은 각 탭 화면을 별도로 구성할 수 있습니다. 첫 번째 탭에는 이름, 별명, 블로그 정보를 입력하도록 텍스트 박스를 배치합니다. 두 번째 탭에는 리스트 박스와 버튼을 추가합니다. 이 버튼을 클릭하게 되면 2개의 탭에 입력했던 내용이 셀로 들어가게 됩니다

 

폼이 뜨면 실행되는 초기화 함수부터 구현합니다. 두 번째 탭의 리스트 박스에 들어갈 취미 생활 목록 데이터들입니다.

 

Private Sub UserForm_Initialize()

    With ListBox1

        .AddItem "바둑"

        .AddItem "등산"

        .AddItem "수영"

        .AddItem "테니스"

    End With

End Sub

 

다음은 두 번째 탭에 있는 시트에 추가 버튼을 클릭했을 때 실행되는 이벤트 함수에 대한 내용입니다. CountA 함수를 이용해서 B 열에 있는 데이터 개수를 알아 옵니다. 그럼 비어 있는 행이 몇 번째인지 알수 있겠죠. 그 값을 Cells 함수에 넣고 폼에 있는 데이터들을 차례대로 추가하는 것입니다.

 

Private Sub CommandButton1_Click()

 

    Dim emptyRow As Long

 

    emptyRow = WorksheetFunction.CountA(Range("B:B")) + 2

 

    ActiveSheet.Cells(emptyRow, 2).Value = TextBox1.Value

    ActiveSheet.Cells(emptyRow, 3).Value = TextBox2.Value

    ActiveSheet.Cells(emptyRow, 4).Value = TextBox3.Value

    ActiveSheet.Cells(emptyRow, 5).Value = ListBox1.Value

 

    'Close Userform

    Unload Me

 

End Sub

 

엑셀 시트에는 폼을 실행할 버튼을 만들고 이벤트 함수에 Show 함수를 추가합니다. 이해를 돕기 위해 구현한 내용을 동영상으로 찍어서 올렸습니다. 참고하세요

Posted by 녹두장군