在find方法上发生types不匹配错误

我试图通过比较2张表find值,然后将行复制到另一张表。 有什么build议么?

Sub SpecialCopy() Dim i As Long Dim cellval, rng As Range Dim ws1, ws2 As Worksheet Dim targetSh As Worksheet Set targetSh = ThisWorkbook.Worksheets("Sheet3") Set ws2 = Sheets("Sheet2") Set ws1 = Sheets("sheet1") ws2.Select With ActiveSheet Set rng = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row) End With For i = 2 To rng.Rows.Count Set cellval = ws1.Columns(1).Find(What:=ws2.Range("U" & i).Value, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) If cellval Is Nothing Then Else Range(Cells(1, i), Cells(33, i)).Copy Destination:=targetSh.Range("A" & targetSh.Cells(Rows.Count, "A").End(xlUp).Row + 1) End If Next i End Sub 

感觉这是上面其他人的评论,但没有人提交了答案,所以这里是我的刺。 有意义使用您的表格variables,因为您已经定义了它们而不是ActiveSheet,并且确保您在每个地方都遵循这一点。

 Sub SpecialCopy() Dim i As Long Dim cellval As Range, rng As Range Dim ws1 As Worksheet, ws2 As Worksheet Dim targetSh As Worksheet Set targetSh = ThisWorkbook.Worksheets("Sheet3") Set ws2 = Sheets("Sheet2") Set ws1 = Sheets("Sheet1") With ws2 Set rng = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row) End With For i = 2 To rng.Rows.Count Set cellval = ws1.Columns(1).Find(What:=ws2.Range("U" & i).Value, LookIn:=xlFormulas, _ LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False) If Not cellval Is Nothing Then ws2.Range(ws2.Cells(1, i), ws2.Cells(33, i)).Copy Destination:=targetSh.Range("A" & targetSh.Cells(targetSh.Rows.Count, "A").End(xlUp).Row + 1) End If Next i End Sub