在多选属性在Excel中VBA允许用户选择列表框中的多个项目。我们将要创建的用户窗体如下所示:
要创建此用户窗体,请执行以下步骤。
1.打开Visual Basic编辑器。如果“项目资源管理器”不可见,请单击“视图”,“项目资源管理器”。
2.单击插入,用户窗体。如果“工具箱”没有自动出现,请单击“视图”,“工具箱”。屏幕设置如下。
3.添加列表框(左侧第一个,右侧第二个),命令按钮,复选框(左侧第一个,右侧第二个),框架和选项按钮(顶部第一个,下方第二个)第一个,依此类推)。完成此操作后,结果应与前面显示的用户窗体的图片一致。例如,通过在工具箱中单击列表框来创建列表框控件。接下来,您可以在用户窗体上拖动一个列表框。当到达“选择类型”框架时,请记住先绘制该框架,然后再将三个选项按钮放入其中。
4.您可以更改控件的名称和标题。在Excel VBA代码中使用名称。字幕是显示在屏幕上的字幕。更改控件的名称是一种很好的做法,但是此处没有必要,因为在此示例中,我们只有几个控件。要更改用户窗体,命令按钮,复选框,框架和选项按钮的标题,请单击“视图”,“属性窗口”,然后单击每个控件。
5.要显示用户窗体,请在工作表上放置一个命令按钮,并添加以下代码行:
UserForm1.Show
End Sub
现在,我们将创建Sub UserForm_Initialize。当您对用户窗体使用Show方法时,此子项将自动执行。
6.打开Visual Basic编辑器。
7.在Project Explorer中,右键单击UserForm1,然后单击“查看代码”。
8.首先,声明Integer类型的变量i。在“常规声明”部分(在代码顶部)声明变量。这样,您只需要声明一次变量,就可以在多个子变量中使用它们。
9.从左侧下拉列表中选择“用户表单”。从右侧的下拉列表中选择初始化。
10.添加以下代码行:
随着 ListBox1的
.AddItem“销售”
.AddItem“生产”
.AddItem“物流”
.AddItem“人力资源”
尾 随着
OptionButton3.Value = 真
完 子
说明:第一个列表框将被填充,第三个选项按钮被设置为默认按钮。
现在,我们已经创建了用户表单的第一部分。尽管看起来已经很整洁,但是当我们单击命令按钮或其他控件时,什么也不会发生。
11.在Project Explorer中,双击UserForm1。
12.双击添加按钮。
13.添加以下代码行:
对于 I = 0 为了 ListBox1.ListCount - 1
如果 ListBox1.Selected(I)= 真 。然后 ListBox2.AddItem ListBox1.List(ⅰ)
接着我
结束 子
说明:Excel VBA循环浏览第一个列表框(列表中第一项的列表索引号为零(0)),如果选中,则将该项添加到第二个列表框。
14.双击删除按钮。
15.添加以下代码行:
昏暗计数器作为整数
计数器= 0
对于 I = 0 为了 ListBox2.ListCount - 1
如果 ListBox2.Selected(I -计数器)然后
ListBox2.RemoveItem(I -计数器)
计数器=计数+ 1
结束 如果
下一页我
CheckBox2 .Value = 错误
结束 子
说明:Excel VBA循环浏览第二个列表框,如果选中,则将其删除。counter变量跟踪已删除项目的数量。
16.双击第一个选项按钮。
17.添加以下代码行:
ListBox1.MultiSelect = 0
ListBox2.MultiSelect = 0
End Sub
18.双击第二个选项按钮。
19.添加以下代码行:
ListBox1.MultiSelect = 1
ListBox2.MultiSelect = 1
End Sub
20.双击第三个选项按钮。
21.添加以下代码行:
ListBox1.MultiSelect = 2
ListBox2.MultiSelect = 2
结束 子
说明:可以通过单击选项按钮来选择“选择类型”设置。前面显示的Userform图片提供了每个设置的描述。除了在运行时配置此设置之外,您还可以在设计时配置此设置。为此,请右键单击列表框控件,然后单击“属性”。将MultiSelect属性设置为0-fmMultiSelectSingle,1-fmMultiSelectMulti或2-fmMultiSelectExtented。
22.双击第一个复选框。
23.添加以下代码行:
如果 CheckBox1.Value = 真 然后
对于 I = 0 为了 ListBox1.ListCount - 1
ListBox1.Selected(ⅰ)=真
接着我
结束 如果
如果 CheckBox1.Value = 假 然后
对于 I = 0 到 ListBox1.ListCount - 1
ListBox1.Selected(ⅰ)= FALSE
接着我
结束 如果
结束 子
说明:通过选中第一个复选框,可以选择/取消选择第一个列表框的所有项目。
24.双击第二个复选框以添加相同的代码行。仅将CheckBox1替换为CheckBox2,将ListBox1替换为ListBox2。