下面我们就来看看在Excel VBA程序,该程序会创建一个包含多列组合框的用户窗体。

用户窗体,我们要创建如下所示:

Multicolumn Combo Box 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.从左边的下拉列表中选择用户窗体。从右侧的下拉列表中选择初始化。

9.添加以下代码行:

Private Sub UserForm_Initialize()

ComboBox1.ColumnCount = 2

Dim Films(1 To 5, 1 To 2) As String

Dim i As Integer, j As Integer

Films(1, 1) = "Lord of the Rings"

Films(2, 1) = "Speed"

Films(3, 1) = "Star Wars"

Films(4, 1) = "The Godfather"

Films(5, 1) = "Pulp Fiction"

Films(1, 2) = "Adventure"

Films(2, 2) = "Action"

Films(3, 2) = "Sci-Fi"

Films(4, 2) = "Crime"

Films(5, 2) = "Drama"

ComboBox1.List = Films

End Sub

说明:第一行代码设置组合框的列数为2。相反,在运行时设置的列数,你也可以配置在设计时这个设置。为了实现这一目标,在组合框控件单击鼠标右键,单击属性和列数属性设置为2。接下来,我们声明并初始化一个二维数组。最后代码行分配阵列到组合框。

我们现在已经创建用户窗体的第一部分。虽然看起来已经整齐,什么都不会,当我们点击用户窗体的命令按钮还没有发生。

10.在Project Explorer中,UserForm1上双击。

11.双击确定按钮。

12.添加以下代码行:

Private Sub CommandButton1_Click()

Unload Me

MsgBox "You selected " & ComboBox1.Value

On Error Resume Next

MsgBox "You like " & ComboBox1.Column(1) & " movies"

End Sub

注意:这些代码行关闭Excel VBA用户窗体,并显示所选择的项目和流派。当他/她自己的电影的用户填写(在这种情况下没有可用的流派)的“关于错误继续下一步”语句忽略错误。

13.双击上的取消按钮。

14.添加以下代码行:

Private Sub CommandButton2_Click()

Unload Me

End Sub

结果当您选择速度,然后单击确定。

Multicolumn Combo Box Result

Multicolumn Combo Box Result