基于excel中的combobox值将数据从一个表单传输到另一个表单

我在工作簿中有2张工作表和一个用户表单。

Sheet1,有3行,包含移位types信息(A2 = A,A3 = B和A4 = C),还有B列(开始时间),C列(结束时间)等附加数据。

我使用一个表格来input员工姓名(txtName)和他们在工作表2中的class次types(cboShift)。col A =姓名和列B =class次types)现在我想通过点击UPDATEbutton完成class次2中的员工数据他们相关的移动信息(开始时间,结束时间…)从表1复制到下一个单元格。

Private Sub cmdUpdate_Click() Dim LastRow As Long Dim ws1 As Worksheet Dim ws2 As Worksheet Dim rng As Range Dim rgnSearch As Range Dim rngFound As Range Set ws1 = Sheets("Sheet1") Set ws2 = Sheets("Sheet2") LastRow = ws2.Range("A" & ws2.Rows2.Count).End(xlUp).row + 1 ws2.Range("A" & LastRow).Value = Me.txtName.Text ws1.Range("A" & LastRow).Offset(0, 1).Value = Me.cboShift.Text Set rgnSearch = ws1.Range("A1", ws1.Cells(Rows2.Count, 1).End(xlUp)) With rgnSearch Set rngFound = .Find(Me.txtName.Text, LookIn:=xlValues) If Not rngFound Is Nothing Then ws1.Range("C" & rngFound.row & ":F" & rngFound.row).Copy Destination:=ws2.Range("C" & LastRow) End If End With End Sub End Sub 

我在两张表中都有标题。

当我运行的代码,我得到错误“方法或数据成员未find)。

 LastRow = ws2.Range("A" & ws2.**Rows2**.Count).End(xlUp).row + 1 

我的下一个问题是:有没有办法为每个人传输数据时,我点击添加button,而不是为所有Thanx后

你可能的意思

 LastRow = ws2.Range("A" & ws2.Rows.Count).End(xlUp).row + 1 

代替

 LastRow = ws2.Range("A" & ws2.Rows2.Count).End(xlUp).row + 1 

引起的错误已经在@ h2so4上面回答了。

但是,在代码中需要考虑几件事情:

  1. ws1.Range("A" & LastRow).Offset(0, 1).Value = Me.cboShift.Text ,不知道它是相同的LastRowws1ws2 ,是ws2

  2. 一旦你已经有了一个成功的发现,在If Not rngFound Is Nothing Then ,你可以使用不同的编码来复制同一行的单元格C:F的内容。

代替:

 ws1.Range("C" & rngFound.row & ":F" & rngFound.row).Copy Destination:=ws2.Range("C" & LastRow) 

您可以使用:

 rngFound.Offset(, 2).Resize(1, 4).Copy Destination:=ws2.Range("C" & LastRow)