多重列表框选择在Excel VBA
在Excel VBA中的多选属性允许用户选择列表框中的多个项目。用户窗体,我们要创建如下所示:
要创建这个用户窗体,请执行下列步骤。
1.打开Visual Basic编辑器。如果项目资源管理器中是不可见,单击视图,工程资源管理器。
2.单击插入,用户窗体。如果工具箱没有自动出现,单击视图,工具箱。您的屏幕应该设置如下。
3.(在左边,第二个在右边第一个),命令按钮,复选框(首先在左边,第二个在右边)添加列表框,框架和选项按钮(第一顶部,第二下方第一,等等)。一旦这个已经完成,其结果应与前面显示的用户窗体的图片一致。例如,创建通过点击列表框从工具箱中一个列表框控件。接下来,你可以在用户窗体拖动列表框。当你在“选择类型”帧到达时,记得先画这个框架您将三个选项按钮在它之前。
4.您可以更改名称和控件的标题。名称在Excel的VBA代码中使用。标题是那些出现在屏幕上。这是改变控件的名称很好的做法,但在这里是没有必要的,因为我们只有几个控件在这个例子中。若要更改用户窗体的标题,命令按钮,复选框,框架和选项按钮,单击视图,属性窗口,然后点击每个控件。
5.要显示用户窗体,放置在您的工作表一个命令按钮并添加以下代码行:
Private Sub CommandButton1_Click() UserForm1.Show End Sub
现在,我们要创建的子UserForm_Initialize。当您使用Show方法用于用户窗体,该子会被自动执行。
6.打开Visual Basic编辑器。
7.在项目资源管理器,右击UserForm1上,然后单击查看代码。
8.首先,声明类型整数的变量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
说明:第一个列表框将被填充和第三个选项按钮被设置为默认值。
我们现在已经创建用户窗体的第一部分。虽然看起来已经整齐,什么都不会,当我们单击命令按钮或其他控件尚未发生。
11.在Project Explorer中,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
说明:VBA的Excel循环通过第二个列表框中,如果选中,删除的项目。计数器变量保存轨道移除的项目数量。
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.双击第三个选项按钮。
21.添加以下代码行:
Private Sub OptionButton3_Click() ListBox1.MultiSelect = 2 ListBox2.MultiSelect = 2 End Sub
说明:“选择型”的设定可以通过点击选项按钮进行选择。前面所示的用户窗体的图像给出了每个设置的说明。而不是配置在运行时这个设置,您还可以配置在设计时这个设置。为了实现在一个列表框控件此,单击鼠标右键,然后单击属性。 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.双击第二个复选框添加相同的代码行。
只有CheckBox2和ListBox1中有ListBox2取代CheckBox1。