엑셀 VBA에서 여러 목록 상자 선택
엑셀 VBA의 MultiSelect 속성은 사용자가 목록 상자에서 여러 항목을 선택할 수 있습니다. 사용자 정의 폼 우리는 다음과 같은 모양을 만들려고하고있다 :
이 정의 폼을 만들려면 다음 단계를 실행합니다.
-
Visual Basic 편집기. 프로젝트 탐색기가 보이지 않으면보기 프로젝트 탐색기를 클릭합니다.
삽입, 사용자 정의 폼을 클릭합니다. 도구 상자가 자동으로 나타나지 않으면,보기, 도구 상자를 클릭합니다. 화면은 다음과 같이 설정해야합니다.
명령 버튼, 체크 박스 (첫번째 왼쪽에서 오른쪽에서 두 번째) (왼쪽, 오른쪽에있는 두 번째에서 첫 번째) 목록 상자를 추가합니다 먼저 상단 프레임과 옵션 버튼 (두 번째 아래 제 등)에. 이것이 완료되면, 그 결과는 앞서 도시 정의 폼의 화상과 일치한다. 예를 들어, 도구 상자에서 목록 상자를 클릭하여 목록 상자 컨트롤을 만듭니다. 다음으로, 당신은 사용자 정의 폼에 목록 상자를 드래그 할 수 있습니다. 당신은 ‘유형 선택’프레임에 도착하면 당신이 그것에 세 가지 옵션 버튼을 배치하기 전에 먼저이 프레임을 그릴 기억한다.
-
이름과 컨트롤의 캡션을 변경할 수 있습니다. 이름은 엑셀 VBA 코드에 사용됩니다. 자막은 화면에 나타나는 것들이다. 이 컨트롤의 이름을 변경하는 것이 좋습니다,하지만 우리는이 예제에서 몇 가지 컨트롤을 가지고 있기 때문에 여기에 필요하지 않습니다. 사용자 정의 폼의 캡션을 변경하려면, 명령 버튼, 체크 박스, 프레임과 옵션 버튼,보기, 속성 창을 클릭하고 각 컨트롤을 클릭합니다.
-
사용자 정의 폼을 보여 워크 시트에 명령 단추를 배치하고 다음 코드 줄을 추가하려면 :
Private Sub CommandButton1_Click() UserForm1.Show End Sub
우리는 지금 하위 UserForm_Initialize을 만들 것입니다. 사용자 정의 폼에 대한 표시 방법을 사용하면,이 서브가 자동으로 실행됩니다.
-
Visual Basic 편집기.
프로젝트 탐색기 7. 오른쪽 UserForm1을 클릭 한 다음 코드보기를 클릭하십시오.
제 먼저, 정수 타입의 변수를 선언 I. (코드의 상단에있는) 일반 선언 섹션에서 변수를 선언합니다. 이 방법은 한 번만 변수를 선언해야하고 여러 잠수함에서 사용할 수 있습니다.
Dim i As Integer
왼쪽 드롭 다운 목록에서 사용자 정의 폼을 선택 9.. 오른쪽 드롭 다운 목록에서 초기화를 선택합니다.
-
다음 코드 줄을 추가합니다
Private Sub UserForm_Initialize() With ListBox1 .AddItem "Sales" .AddItem "Production" .AddItem "Logistics" .AddItem "Human Resources" End With OptionButton3.Value = True End Sub
설명 : 첫 번째 목록 상자가 작성되고 세 번째 옵션 버튼이 기본값으로 설정되어 있습니다.
우리는 지금 사용자 정의 폼의 첫 번째 부분을 만들었습니다. 이미 깔끔한 보이지만 우리가 명령 버튼이나 다른 컨트롤을 클릭하면, 아무것도 아직 일어나지 않습니다.
(11)에서 프로젝트 탐색기, UserForm1을 두 번 클릭합니다.
-
더블 추가 버튼을 클릭합니다.
-
다음 코드 줄을 추가합니다
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
설명 : 선택한 경우, (첫 번째 목록의 항목에 대한 제로 (0 목록 인덱스 번호)) 첫 번째 목록 상자를 통해 엑셀 VBA 루프, 두 번째 목록 상자에 항목을 추가합니다.
14 더블 제거 버튼을 클릭합니다.
-
다음 코드 줄을 추가합니다
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
설명 : 엑셀 VBA가 두 번째 목록 상자를 통해 반복하고, 선택한 경우, 항목을 제거합니다. 카운터 변수 제거 항목의 수의 트랙을 유지한다.
-
두 번 첫 번째 옵션 버튼을 클릭합니다.
-
다음 코드 줄을 추가합니다
Private Sub OptionButton1_Click() ListBox1.MultiSelect = 0 ListBox2.MultiSelect = 0 End Sub
-
두 번째 옵션 버튼을 클릭합니다.
-
다음 코드 줄을 추가합니다
Private Sub OptionButton2_Click() ListBox1.MultiSelect = 1 ListBox2.MultiSelect = 1 End Sub
(20) 두 번 세 번째 옵션 버튼을 클릭합니다.
-
다음 코드 줄을 추가합니다
Private Sub OptionButton3_Click() ListBox1.MultiSelect = 2 ListBox2.MultiSelect = 2 End Sub
설명 : ‘유형 선택’설정은 옵션 버튼을 클릭하여 선택할 수 있습니다. 앞서 도시 정의 폼의 사진은 각 설정에 대한 설명을 제공한다. 대신 런타임에이 설정을 구성, 당신은 또한 디자인 타임에이 설정을 구성 할 수 있습니다. 목록 상자 컨트롤에이, 오른쪽 마우스 클릭을 달성 한 다음 속성을 클릭하십시오. fmMultiSelectSingle – 1 – fmMultiSelectMulti 2 – fmMultiSelectExtented 0 MultiSelect 속성을 설정합니다.
22 번 첫 번째 체크 박스를 클릭합니다.
-
다음 코드 줄을 추가합니다
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) 두 번 동일한 코드 라인을 추가하는 두 번째 체크 박스를 클릭합니다.
만 ListBox2와 CheckBox2과에 ListBox1에 CheckBox1을 교체합니다.