Excel的VBA用户窗体多页
下面我们就来看看在Excel VBA程序,该程序会创建一个包含多个页面的窗体。这也是用户窗体包含图像。
多页控件包含两页。第1页,用户可以在他/她的个人信息填写。在第2页中,用户可以指示哪个画他/她喜欢最。
要创建这个用户窗体,请执行下列步骤。
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.从左边的下拉列表中选择用户窗体。从右侧的下拉列表中选择初始化。
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的标签和测试用户窗体。
结果: