在Excel VBA中的多选属性允许用户选择列表框中的多个项目。用户窗体,我们要创建如下所示:

Multiple List Box Selections in Excel VBA

要创建这个用户窗体,请执行下列步骤。

1.打开Visual Basic编辑器。如果项目资源管理器中是不可见,单击视图,工程资源管理器。

2.单击插入,用户窗体。如果工具箱没有自动出现,单击视图,工具箱。您的屏幕应该设置如下。

Userform Screen Setup in Excel VBA

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。