![](/img/trans.png)
[英]Excel VBA - Transfer Data range from one sheet to another based on conditional text string
[英]Transfer data from from one sheet to another based on combobox value in excel
我的工作簿中有2张纸和一张用户表格。
Sheet1有3行,其中包含班次类型信息。(A2 = A,A3 = B和A4 = C),我在col B(开始时间),col C(结束时间)等中还有其他数据。
我现在使用表格在工作表2中输入员工姓名(txtName)及其班次类型(cboShift)。col A =名称,col B =班次类型)现在我想在班次2中通过单击UPDATE按钮完成员工数据时他们将工作表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
我在两张纸上都有标题。
当我运行代码时,出现错误“未找到方法或数据成员)。
LastRow = ws2.Range("A" & ws2.**Rows2**.Count).End(xlUp).row + 1
我的下一个问题是:当我单击“添加”按钮时,是否有任何方法可以为每个人传输数据,而不是在所有Thanx之后进行数据传输?
你可能是说
LastRow = ws2.Range("A" & ws2.Rows.Count).End(xlUp).row + 1
代替
LastRow = ws2.Range("A" & ws2.Rows2.Count).End(xlUp).row + 1
上面@ h2so4中已经回答的错误导致。
但是,在代码中需要考虑以下几点:
ws1.Range("A" & LastRow).Offset(0, 1).Value = Me.cboShift.Text
,不知道它的同一LastRow
两个ws1
ANS ws2
,是它???
成功查找后,在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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.