我正在使用以下代码从用户表单(具有类似问题集)传输数据,使用命令按钮根据项目要求在同一工作表中的15-25个单独的小表中填充不同的单元格。
由于我是VBA编码的新手,我的方法是为每个表重复以下代码以填充单元格,但寻找有效的方法来执行此操作,因为所有具有问题的用户表单都相同但期望每个表的响应不同。
示例:每个工作表都有15-25个表格,我们需要在每个表格中填写使用相同用户表单和相同问题的学生组的个人信息(如姓名,年龄,性别,出生日期,学校,城市)组。
我需要知道是否有更好的方法只能为同一工作表中的所有表编写此代码一次(因为用户表单和问题都相同),并使用特定于表的命令按钮在不同的表中填充数据。
我目前的代码和方法是:
Private Sub SubmitButtonForm1_Click()
wsWorkPlan.Select
Range("B13").Select
ActiveCell.End(xlDown).Select
lastRow = ActiveCell.Row
Cells(lastRow + 1, 6).Value = txtQ1.Text
Cells(lastRow + 1, 7).Value = txtQ2.Text
Cells(lastRow + 1, 2).Value = txtQ3.Text
Cells(lastRow + 1, 8).Value = cmbQ4.Text
Cells(lastRow + 1, 5).Value = cmbQ5.Text
Cells(lastRow + 1, 4).Value = cmbQ6.Text
End Sub
Private Sub SubmitButtonForm2_Click()
wsWorkPlan.Select
Range("B55").Select
ActiveCell.End(xlDown).Select
lastRow = ActiveCell.Row
Cells(lastRow + 1, 6).Value = txtQ1.Text
Cells(lastRow + 1, 7).Value = txtQ2.Text
Cells(lastRow + 1, 2).Value = txtQ3.Text
Cells(lastRow + 1, 8).Value = cmbQ4.Text
Cells(lastRow + 1, 5).Value = cmbQ5.Text
Cells(lastRow + 1, 4).Value = cmbQ6.Text
End Sub
Private Sub SubmitButtonForm3_Click()
wsWorkPlan.Select
Range("B76").Select
ActiveCell.End(xlDown).Select
lastRow = ActiveCell.Row
Cells(lastRow + 1, 6).Value = txtQ1.Text
Cells(lastRow + 1, 7).Value = txtQ2.Text
Cells(lastRow + 1, 2).Value = txtQ3.Text
Cells(lastRow + 1, 8).Value = cmbQ4.Text
Cells(lastRow + 1, 5).Value = cmbQ5.Text
Cells(lastRow + 1, 4).Value = cmbQ6.Text
End Sub
非常感谢您的帮助!
答案 0 :(得分:1)
考虑使用userform或标准模块后面的一个单独的函数,让每个按钮调用传递所需的参数,如单元格范围:
Private Sub SubmitButtonForm1_Click()
Call UpdateCells("B13")
End Sub
Private Sub SubmitButtonForm2_Click()
Call UpdateCells("B55")
End Sub
Private Sub SubmitButtonForm3_Click()
Call UpdateCells("B76")
End Sub
Public Function UpdateCells(strCell As String)
wsWorkPlan.Select
Range(strCell).Select
ActiveCell.End(xlDown).Select
lastRow = ActiveCell.Row
Cells(lastRow + 1, 6).Value = txtQ1.Text
Cells(lastRow + 1, 7).Value = txtQ2.Text
Cells(lastRow + 1, 2).Value = txtQ3.Text
Cells(lastRow + 1, 8).Value = cmbQ4.Text
Cells(lastRow + 1, 5).Value = cmbQ5.Text
Cells(lastRow + 1, 4).Value = cmbQ6.Text
End Function