Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 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 녹두장군1
,