分享

如何用VBA制作一个简易输入表单?

 拾叁亿人 2023-05-01 发布于云南

需求:用VBA制作一个输入表单,主要输入内容为:姓名、性别、年龄、职业、婚姻状况、简介。其中姓名为输入框,性别为下拉选择”男'和'女',年龄为输入框,职业为输入框,婚姻状况为下拉选择“已婚'、'未婚'、'离异'、'丧偶',简介为大段文本框。在EXCEL启动时同时启动表单。

答案:

请按照以下步骤使用VBA制作输入表单:

  1. 打开Excel,按下ALT+F11打开Visual Basic Editor
  2. 在左侧的Project Explorer中,找到你要添加表单的工作簿,右键点击它,并选择Insert -> UserForm
  3. 在UserForm上拖动相应的控件,包括:姓名为文本框(TextBox),性别为组合框(ComboBox),年龄为文本框(TextBox),职业为文本框(TextBox),婚姻状况为组合框(ComboBox),简介为大段文本框(MultiLine TextBox)。
  4. 对照第6条中的代码,为每个控件设置相应的属性,例如:给姓名文本框设置Name属性为'txtName',给性别组合框设置Name属性为'cboGender'等等。
  5. 编辑UserForm的代码,在'Userform_Activate()'事件中添加代码,以在Excel启动时同时启动该表单。代码如下:
Private Sub UserForm_Activate() Me.ShowEnd Sub
  1. 在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
  1. 编辑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
  1. 在代码编辑器中,选择该表单,然后按下F5或点击执行按钮,以运行此表单。

现在,当Excel启动时,Input Form表单会同时启动。用户可以填写表单,保存数据,并通过点击“提交”按钮将数据保存到Excel工作表中。

文章图片1

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多