因此,我在工作表EmployeeForm
中有两个表单(EmployeeForm1和EmployeeForm2),在工作表TableEmployee
中有一个Excel表EmployeeData
,看起来像这样:
表中的数据来自这两种形式的提交,但是到目前为止,我仅成功输入了表的前半部分。
Employee Form 2
中的数据仅在Employee Form 1
提交后才可以提交(可能要几天甚至几周之后才能提交)。
现在我要实现的是拥有一个可以正常工作的VBA代码,该代码可以正确匹配D13单元格中的Employee ID
与H列中的Employee ID
,并将D14:D17中的数据记录到正确的位置地点。
因此在上面的示例中,由于Employee ID
为145,所以一旦我单击Form 2中的Submit按钮,D14:D17中的数据应存储在L7:O7中。
到目前为止,这是我的代码:
Sub Submit_Form1()
Dim LastRow As Long, ws As Worksheet
Set ws = Worksheets("EmployeeData")
LastRow = ws.Range("H" & Rows.Count).End(xlUp).Row + 1
ws.Range("H" & LastRow).Value = Worksheets("EmployeeForm").Range("D5").Value 'Employee ID
ws.Range("I" & LastRow).Value = Worksheets("EmployeeForm").Range("D6").Value 'Employee Name
ws.Range("J" & LastRow).Value = Worksheets("EmployeeForm").Range("D7").Value 'Place of Birth
ws.Range("K" & LastRow).Value = Worksheets("EmployeeForm").Range("D8").Value 'Working Experience
End Sub
对于表格2
Sub Submit_Form2()
Dim LastRow As Long, ws As Worksheet
Dim H As String
Set ws = Worksheets("EmployeeData")
employeeid = Sheets("EmployeeForm").Range("D13").Value
If Cells(H) = employeeid Then
ws.Range("L" & LastRow).Value = Worksheets("EmployeeForm").Range("D14").Value 'Education
ws.Range("M" & LastRow).Value = Worksheets("EmployeeForm").Range("D15").Value 'Last Company
ws.Range("N" & LastRow).Value = Worksheets("EmployeeForm").Range("D16").Value 'Join Date
ws.Range("O" & LastRow).Value = Worksheets("EmployeeForm").Range("D17").Value 'Position
End Sub
当然,第二个宏不起作用,但是有人可以通过正确的方法来启发我吗?非常感谢!
答案 0 :(得分:1)
你可以试试吗?
Sub Submit_Form2()
Dim ws As Worksheet, v As Variant
Set ws = Worksheets("EmployeeData")
employeeid = Sheets("EmployeeForm").Range("D13").Value
v = Application.Match(employeeid, ws.Range("H:H"), 0)
If IsNumeric(v) Then
ws.Range("L" & v).Value = Worksheets("EmployeeForm").Range("D14").Value 'Education
ws.Range("M" & v).Value = Worksheets("EmployeeForm").Range("D15").Value 'Last Company
ws.Range("N" & v).Value = Worksheets("EmployeeForm").Range("D16").Value 'Join Date
ws.Range("O" & v).Value = Worksheets("EmployeeForm").Range("D17").Value 'Position
End If
End Sub
您的代码存在问题
If Cells(H) = employeeid Then
这是无效的语法。单元格需要行和列引用,例如单元格(1,1)或单元格(1,“ A”)。更不用说H没有定义。