컴퓨터 공부/엑셀 & VBA

[엑셀vba] 사용자 정의 폼 실행 중에 컨트롤 추가하기

도 박사 2020. 9. 8. 12:49
반응형

 

사용자 정의 폼이 실행 중일 때 각종 컨트롤(텍스트박스, 레이블, 체크박스 등)을 추가해보자

 


1. CommandButton 추가

 

그냥 유저폼1

저 버튼을 누르면 커맨드버튼이 생성된다.

 

네 번 클릭 후 결과

 

Private Sub CommandButton1_Click()

    Dim Add_Ctrl As Control
    
    Set Add_Ctrl = Controls.Add("Forms.CommandButton.1")

End Sub

기본적인 커맨드버튼 생성 코드이다.

 

이것만 실행하면 가장 기본적인 크기의 버튼이 생성되고 위치, 크기, 이름 등은 생성 후에 조정해주면 된다.

 

Private Sub CommandButton1_Click()

    Dim Add_Ctrl As Control
    
    Set Add_Ctrl = Controls.Add("Forms.CommandButton.1")
    
    Add_Ctrl.Left = 12          '좌우 위치, 0일 경우 가장 왼쪽
    Add_Ctrl.Top = 12           '상하 위치, 0일 경우 가장 위쪽
    Add_Ctrl.Width = 36         '가로길이(너비)
    Add_Ctrl.Height = 18        '세로길이(높이)
    Add_Ctrl.Caption = "Text"    
    Add_Ctrl.Name =  "Control" 
End Sub

코드 실행결과

 


2. 다른 컨트롤 추가

 

컨트롤 코드
CheckBox Forms.CheckBox.1
ComboBox Forms.ComboBox.1
CommandButton Forms.CommandButton.1
Frame Forms.Frame.1
Image Forms.Image.1
Label Forms.Label.1
ListBox Forms.ListBox.1
MultiPage Forms.MultiPage.1
OptionButton Forms.OptionButton.1
ScrollBar Forms.ScrollBar.1
SpinButton Forms.SpinButton.1
TabStrip Forms.TabStrip.1
TextBox Forms.TextBox.1
ToggleButton Forms.ToggleButton.1

 

Set Add_Ctrl = Controls.Add("Forms.CommandButton.1")

 

Forms.CommandButton.1 대신 필요한 놈들로 바꿔서 쓰면 해당 컨트롤이 생성된다.

 


 

3. 추가된 컨트롤 사용하기

 

유저폼의 컨트롤들이 모여있는 곳

 

컨트롤이 한 개라서 item도 하나다.

유저폼의 컨트롤들은 ME > Controls에 모여있다.

 

Controls 안에 item으로 옹기종기 있으며, 컨트롤을 추가하면 item도 늘어나게 된다.

 

컨트롤 추가 후 늘어난 item
추가된 컨트롤의 캡션과 이름

 

컨트롤 추가하는 버튼을 클릭하니 Item이 두 개로 늘었다.

 

내가 설정한 캡션과 이름으로도 변경됨을 확인할 수 있다.

 

그렇다면 추가된 컨트롤은 어떻게 사용하나

 

 

Private Sub UserForm_Click()
    Me.Controls.Item(1).Caption = "Hello World"
End Sub

유저폼을 클릭했을 때 추가된 컨트롤의 캡션을 바꾸도록 했다.

 

사용법은 ME.Controls.Item(숫자).속성명(left, top, name, caption 등) 하여 쓸 수 있다.

 

item(숫자)부분에서 조심할건 속성창에 표시되는 건 item1, item2 ,.. ... .item10 이렇게 1부터 시작하지만

 

코드에서 item(0)부터 시작한다. 배열과 똑같다. 

 

ex). 속성창에 표시된 item3을 사용하려면  코드에서 item(2)


 

 

 

 

 

 

 

반응형