下面我们就来看看在Excel VBA程序,该程序会创建一个包含多个页面的窗体。这也是用户窗体包含图像。

多页控件包含两页。第1页,用户可以在他/她的个人信息填写。在第2页中,用户可以指示哪个画他/她喜欢最。

Userform Page 1

Userform Page 2

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

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()

With ListBox1

.AddItem "Mountains"

.AddItem "Sunset"

.AddItem "Beach"

.AddItem "Winter"

End With

End Sub

说明:第2页列表框将被填充。

我们现在已经创建用户窗体的第一部分。虽然看起来已经整齐,什么都不会的时候,我们选择从列表框中选择一个项目还没有发生,或者当我们点击OK按钮。

10.下载图像(此页面的右侧),并将它们添加到“C:\测试\”

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

12.双击列表框中。

13.添加以下代码行:

Private Sub ListBox1_Click()

If ListBox1.ListIndex = 0 Then

Image1.Picture = LoadPicture("C:\test\Mountains.jpg")

End If

If ListBox1.ListIndex = 1 Then

Image1.Picture = LoadPicture("C:\test\Sunset.jpg")

End If

If ListBox1.ListIndex = 2 Then

Image1.Picture = LoadPicture("C:\test\Beach.jpg")

End If

If ListBox1.ListIndex = 3 Then

Image1.Picture = LoadPicture("C:\test\Winter.jpg")

End If

End Sub

说明:这些代码行取决于在列表框中选择的项目加载的图像。

14.双击确定按钮。

15.添加以下代码行:

Private Sub CommandButton1_Click()

Dim emptyRow As Long

'Make Sheet1 active

Sheet1.Activate

'Determine emptyRow

emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

'Transfer information

Cells(emptyRow, 1).Value = TextBox1.Value

Cells(emptyRow, 2).Value = TextBox2.Value

If OptionButton1.Value = True Then

Cells(emptyRow, 3).Value = "Male"

Else

Cells(emptyRow, 3).Value = "Female"

End If

Cells(emptyRow, 4).Value = ListBox1.Value

'Close Userform

Unload Me

End Sub

说明:第一,我们激活工作表Sheet1。接下来,我们确定emptyRow。变量emptyRow是第一个空行,并增加每次添加一个记录时间。接下来,我们从用户窗体传递信息emptyRow的特定列。最后,我们关闭窗体。

16.退出Visual Basic编辑器,进入如下进行1的标签和测试用户窗体。

结果:

Test the Userform