需求:用VBA制作一个输入表单,主要输入内容为:姓名、性别、年龄、职业、婚姻状况、简介。其中姓名为输入框,性别为下拉选择”男'和'女',年龄为输入框,职业为输入框,婚姻状况为下拉选择“已婚'、'未婚'、'离异'、'丧偶',简介为大段文本框。在EXCEL启动时同时启动表单。 答案: 请按照以下步骤使用VBA制作输入表单: - 打开Excel,按下ALT+F11打开Visual Basic Editor
- 在左侧的Project Explorer中,找到你要添加表单的工作簿,右键点击它,并选择Insert -> UserForm
- 在UserForm上拖动相应的控件,包括:姓名为文本框(TextBox),性别为组合框(ComboBox),年龄为文本框(TextBox),职业为文本框(TextBox),婚姻状况为组合框(ComboBox),简介为大段文本框(MultiLine TextBox)。
- 对照第6条中的代码,为每个控件设置相应的属性,例如:给姓名文本框设置Name属性为'txtName',给性别组合框设置Name属性为'cboGender'等等。
- 编辑UserForm的代码,在'Userform_Activate()'事件中添加代码,以在Excel启动时同时启动该表单。代码如下:
Private Sub UserForm_Activate() Me.ShowEnd Sub
- 在UserForm中添加一个“提交”按钮(Button),并给它设置一个Click事件,以便在用户填写完表单后,通过点击该按钮将数据保存到Excel工作表中。代码示例如下:
Private Sub btnSubmit_Click() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets('Sheet1') '更改为你要保存数据的工作表名称 Dim lastRow As Long lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row '找到最后一行 ws.Cells(lastRow + 1, 1) = Me.txtName.Value '将姓名保存到第一列的下一个空行 ws.Cells(lastRow + 1, 2) = Me.cboGender.Value '将性别保存到第二列的下一个空行 ws.Cells(lastRow + 1, 3) = Me.txtAge.Value '将年龄保存到第三列的下一个空行 ws.Cells(lastRow + 1, 4) = Me.txtOccupation.Value '将职业保存到第四列的下一个空行 ws.Cells(lastRow + 1, 5) = Me.cboMaritalStatus.Value '将婚姻状况保存到第五列的下一个空行 ws.Cells(lastRow + 1, 6) = Me.txtIntroduction.Value '将简介保存到第六列的下一个空行 MsgBox '数据已保存!', vbInformation, '提示' '弹出消息框,告知用户数据已保存 Me.Hide '隐藏表单End Sub
- 编辑UserForm的代码,在'Userform_Initialize()'事件中添加代码,以初始化组合框(ComboBox)的选项。代码如下:
Private Sub UserForm_Initialize() '初始化性别组合框 Me.cboGender.AddItem '男' Me.cboGender.AddItem '女' '初始化婚姻状况组合框 Me.cboMaritalStatus.AddItem '已婚' Me.cboMaritalStatus.AddItem '未婚' Me.cboMaritalStatus.AddItem '离异' Me.cboMaritalStatus.AddItem '丧偶'End Sub
- 在代码编辑器中,选择该表单,然后按下F5或点击执行按钮,以运行此表单。
现在,当Excel启动时,Input Form表单会同时启动。用户可以填写表单,保存数据,并通过点击“提交”按钮将数据保存到Excel工作表中。
|