/ VBA의 여러 목록 상자 선택

Excel VBA의 여러 목록 상자 선택

그만큼 MultiSelect 속성 ...에서 Excel VBA 사용자가 목록 상자에서 여러 항목을 선택할 수 있습니다. 우리가 생성 할 Userform은 다음과 같습니다.

Excel VBA의 여러 목록 상자 선택

이 사용자 정의 폼을 만들려면 다음 단계를 수행하십시오.

1. Visual Basic Editor를 엽니 다. 프로젝트 탐색기가 보이지 않으면보기, 프로젝트 탐색기를 클릭하십시오.

2. Insert, Userform을 클릭하십시오. 도구 상자가 자동으로 나타나지 않으면보기, 도구 상자를 클릭하십시오. 화면은 다음과 같이 설정해야합니다.

Excel VBA의 사용자 폼 화면 설정

삼. 목록 상자 (처음에는 왼쪽, 두 번째는 오른쪽), 명령 단추, 확인란 (왼쪽에서 두 번째, 오른쪽에서 두 번째), 프레임 및 옵션 단추 (첫 번째는 위쪽, 두 번째는 첫 번째 , 등등). 이 작업이 완료되면 이전에 표시된 Userform 그림과 일치해야합니다. 예를 들어 도구 상자에서 ListBox를 클릭하여 목록 상자 컨트롤을 만듭니다. 다음으로, 사용자 정의 폼의 목록 상자를 끌 수 있습니다. "유형 선택"프레임에 도착하면 세 개의 옵션 버튼을 배치하기 전에 먼저이 프레임을 그려야합니다.

4. 컨트롤의 이름과 캡션을 변경할 수 있습니다. 이름은 Excel VBA 코드에서 사용됩니다. 자막은 화면에 나타나는 자막입니다. 컨트롤의 이름을 변경하는 것이 좋지만이 예제에는 컨트롤이 몇 개 있기 때문에 여기서는 필요하지 않습니다. 사용자 정의 폼, 명령 단추, 확인란, 프레임 및 옵션 단추의 캡션을 변경하려면보기, 속성 창을 클릭하고 각 컨트롤을 클릭하십시오.

5. 사용자 정의 폼을 표시하려면 워크 시트에 명령 단추를 놓고 다음 코드 줄을 추가하십시오.

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

이제 Sub UserForm_Initialize를 만들겠습니다. 사용자 정의 폼에 Show 메서드를 사용하면이 하위가 자동으로 실행됩니다.

6. Visual Basic Editor를 엽니 다.

7. 프로젝트 탐색기에서 UserForm1을 마우스 오른쪽 단추로 누른 다음 코드보기를 누릅니다.

8. 먼저 Integer 유형의 변수 i를 선언하십시오. 일반 선언 섹션 (코드 맨 위에 있음)에서 변수를 선언하십시오. 이 방법을 사용하면 변수를 한 번만 선언하면 여러 하위에 변수를 사용할 수 있습니다.

Dim i As Integer

9. 왼쪽 드롭 다운 목록에서 사용자 양식을 선택하십시오. 오른쪽 드롭 다운 목록에서 초기화를 선택하십시오.

10. 다음 코드 행을 추가하십시오.

Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "Sales"
    .AddItem "Production"
    .AddItem "Logistics"
    .AddItem "Human Resources"
End With

OptionButton3.Value = True

End Sub

설명 : 첫 번째 목록 상자가 채워지고 세 번째 옵션 단추가 기본값으로 설정됩니다.

우리는 이제 Userform의 첫 번째 부분을 만들었습니다. 이미 깔끔하게 보이지만 명령 단추 나 다른 컨트롤을 클릭해도 아무런 변화가 없습니다.

11. 프로젝트 탐색기에서 UserForm1을 두 번 누릅니다.

12. 추가 버튼을 두 번 클릭하십시오.

13. 다음 코드 행을 추가하십시오.

Private Sub CommandButton1_Click()

For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i)
Next i

End Sub

설명 : Excel VBA는 첫 번째 목록 상자 (목록의 첫 번째 항목에 대해 목록 인덱스 번호를 0으로 지정)를 반복하고 선택한 경우 두 번째 목록 상자에 항목을 추가합니다.

14. 제거 버튼을 두 번 클릭하십시오.

15. 다음 코드 행을 추가하십시오.

Private Sub CommandButton2_Click()

Dim counter As Integer
counter = 0

For i = 0 To ListBox2.ListCount - 1
    If ListBox2.Selected(i - counter) Then
        ListBox2.RemoveItem (i - counter)
        counter = counter + 1
    End If
Next i

CheckBox2.Value = False

End Sub

설명 : Excel VBA는 두 번째 목록 상자를 통해 반복하고 선택한 경우 항목을 제거합니다. 카운터 변수는 제거 된 항목의 수를 추적합니다.

16. 첫 번째 옵션 버튼을 두 번 클릭하십시오.

17. 다음 코드 행을 추가하십시오.

Private Sub OptionButton1_Click()

ListBox1.MultiSelect = 0
ListBox2.MultiSelect = 0

End Sub

18. 두 번째 옵션 버튼을 두 번 클릭하십시오.

19. 다음 코드 행을 추가하십시오.

Private Sub OptionButton2_Click()

ListBox1.MultiSelect = 1
ListBox2.MultiSelect = 1

End Sub

20. 세 번째 옵션 버튼을 두 번 클릭하십시오.

--- 装置- 13- following following 13 following-- 装置- following 装置- 13 装置 following 装置- 装置 装置---- following------------ 13- following 装置-- 装置-- 13-- 装置--- 装置-- 13 装置- following 13 following 13-- following- 装置-- 装置-- 装置-- 装置 following---- following 装置 13-- following-------- 13- 装置 装置---------- 装置----------------

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2
ListBox2.MultiSelect = 2

End Sub

설명: "Select Type"설정은 옵션 버튼을 클릭하여 선택할 수 있습니다. 앞에서 설명한 Userform 그림에는 각 설정에 대한 설명이 나와 있습니다. 런타임에이 설정을 구성하는 대신 디자인 타임에이 설정을 구성 할 수도 있습니다. 이를 위해 마우스 오른쪽 단추로 목록 상자 컨트롤을 클릭 한 다음 속성을 클릭하십시오. MultiSelect 속성을 0 - fmMultiSelectSingle, 1 - fmMultiSelectMulti 또는 2 - fmMultiSelectExtented로 설정합니다.

22. 첫 번째 확인란을 두 번 클릭합니다.

23. 다음 코드 행을 추가하십시오.

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next i
End If

If CheckBox1.Value = False Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = False
    Next i
End If

End Sub

설명 : 첫 번째 확인란을 선택하면 첫 번째 목록 상자의 모든 항목을 선택 / 선택 취소 할 수 있습니다.

24. 두 번째 확인란을 두 번 클릭하여 동일한 코드 행을 추가합니다. CheckBox1을 CheckBox2로, ListBox1을 ListBox2로 바꿉니다.

또한 읽으십시오 :