添加控件| 链接:#表演,窗体[显示用户窗体]| 链接:#分配的宏[分配宏]| 链接:#测试用户窗体[测试用户窗体]

本章将教你如何创建一个Excel VBA窗体。用户窗体,我们要创建如下所示:

Excel VBA Userform

添加控件

将控件添加到用户窗体,请执行下列步骤。

Visual Basic编辑器。如果项目资源管理器中是不可见,单击视图,工程资源管理器。

2.单击插入,用户窗体。如果工具箱没有自动出现,单击视图,工具箱。您的屏幕应该设置如下。

Userform Screen Setup in Excel VBA

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和测试窗体。

结果:

Test the Userform