Excel的VBA用户窗体
添加控件| 链接:#表演,窗体[显示用户窗体]| 链接:#分配的宏[分配宏]| 链接:#测试用户窗体[测试用户窗体]
本章将教你如何创建一个Excel VBA窗体。用户窗体,我们要创建如下所示:
添加控件
将控件添加到用户窗体,请执行下列步骤。
Visual Basic编辑器。如果项目资源管理器中是不可见,单击视图,工程资源管理器。
2.单击插入,用户窗体。如果工具箱没有自动出现,单击视图,工具箱。您的屏幕应该设置如下。
3.添加下表中列出的控件。一旦这个已经完成,其结果应与前面显示的用户窗体的图片一致。例如,创建通过点击文本框从工具箱中的文本框控件。接下来,你可以在用户窗体拖动文本框。当你在车框架到达,记得先画这个框架您将两个选项按钮在它之前。
4.更改名称,并根据下表对照的字幕。名称在Excel的VBA代码中使用。标题是那些出现在屏幕上。这是改变控件的名字很好的做法。这将使你的代码更易于阅读。要更改名称和控件的标题,单击视图,属性窗口,然后点击每个控件。
Control |
Name |
Caption |
Userform |
DinnerPlannerUserForm |
Dinner Planner |
Text Box |
NameTextBox |
|
Text Box |
PhoneTextBox |
|
List Box |
CityListBox |
|
Combo Box |
DinnerComboBox |
|
Check Box |
DateCheckBox1 |
June 13th |
Check Box |
DateCheckBox2 |
June 20th |
Check Box |
DateCheckBox3 |
June 27th |
Frame |
CarFrame |
Car |
Option Button |
CarOptionButton1 |
Yes |
Option Button |
CarOptionButton2 |
No |
Text Box |
MoneyTextBox |
|
Spin Button |
MoneySpinButton |
|
Command Button |
OKButton |
OK |
Command Button |
ClearButton |
Clear |
Command Button |
CancelButton |
Cancel |
7 Labels |
No need to change |
Name:, Phone Number:, etc. |
注:组合框是从那里用户可以选择他/她自己选择的项目或填充一个下拉列表。选项按钮只能有一个选择。
显示用户窗体
命令按钮在工作表,并添加以下代码行:
Private Sub CommandButton1_Click() DinnerPlannerUserForm.Show End Sub
现在,我们要创建的子UserForm_Initialize。当您使用Show方法用于用户窗体,该子会被自动执行。
2.在项目资源管理器中,右键单击DinnerPlannerUserForm,然后单击查看代码。
3.从左边的下拉列表中选择用户窗体。从右侧的下拉列表中选择初始化。
4.添加以下代码行:
Private Sub UserForm_Initialize() 'Empty NameTextBox NameTextBox.Value = "" 'Empty PhoneTextBox PhoneTextBox.Value = "" 'Empty CityListBox CityListBox.Clear 'Fill CityListBox With CityListBox .AddItem "San Francisco" .AddItem "Oakland" .AddItem "Richmond" End With 'Empty DinnerComboBox DinnerComboBox.Clear 'Fill DinnerComboBox With DinnerComboBox .AddItem "Italian" .AddItem "Chinese" .AddItem "Frites and Meat" End With 'Uncheck DataCheckBoxes DateCheckBox1.Value = False DateCheckBox2.Value = False DateCheckBox3.Value = False 'Set no car as default CarOptionButton2.Value = True 'Empty MoneyTextBox MoneyTextBox.Value = "" 'Set Focus on NameTextBox NameTextBox.SetFocus End Sub
说明:文本框被清空,列表框和组合框填充,复选框选中,等
分配宏
我们现在已经创建用户窗体的第一部分。虽然看起来已经整齐,什么都不会,当我们点击用户窗体的命令按钮还没有发生。
2.在项目资源管理器,在DinnerPlannerUserForm双击。
3.双击货币旋转按钮。
4.添加以下代码行:
Private Sub MoneySpinButton_Change() MoneyTextBox.Text = MoneySpinButton.Value End Sub
说明:当您使用旋转按钮这行代码更新文本框。
5.双击确定按钮。
6.添加以下代码行:
Private Sub OKButton_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 = NameTextBox.Value Cells(emptyRow, 2).Value = PhoneTextBox.Value Cells(emptyRow, 3).Value = CityListBox.Value Cells(emptyRow, 4).Value = DinnerComboBox.Value If DateCheckBox1.Value = True Then Cells(emptyRow, 5).Value = DateCheckBox1.Caption If DateCheckBox2.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox2.Caption If DateCheckBox3.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox3.Caption If CarOptionButton1.Value = True Then Cells(emptyRow, 6).Value = "Yes" Else Cells(emptyRow, 6).Value = "No" End If Cells(emptyRow, 7).Value = MoneyTextBox.Value End Sub
说明:第一,我们激活工作表Sheet1。接下来,我们确定emptyRow。变量emptyRow是第一个空行,并增加每次添加一个记录时间。最后,我们从用户窗体传递信息emptyRow的特定列。
7.双击清除按钮。
8.添加以下代码行:
Private Sub ClearButton_Click() Call UserForm_Initialize End Sub
说明:此代码行调用当你点击清除按钮的子UserForm_Initialize。
9.双击上的取消按钮。
10.添加以下代码行:
Private Sub CancelButton_Click() Unload Me End Sub
说明:这行代码将关闭用户窗体,当您点击取消按钮。
测试用户窗体
退出Visual Basic编辑器,进入下图所示的标签为行1和测试窗体。
结果: