Sub Search()
'Macro
Application.ScreenUpdating = False
嘿伙计们,
当我在列“U”中查找范围时,我一直收到类型不匹配 “它被卡在If Cells(x,”U“)= MyVars然后”而且我不知道我做错了什么。
非常感谢任何帮助。
Dim copysheet As Worksheet
Dim pastesheet As Worksheet
Dim MyVars As Range
Dim Myline As Range
Set copysheet = Worksheets("RawData")
Set pastesheet = Worksheets("SEARCH")
Set MyVars = copysheet.Range("$Y$1")
pastesheet.Select
pastesheet.Range("$A$12:$Q$5000").ClearContents
'Search According to criteria
Dim x As Long
copysheet.Select
With copysheet.Range("U:U")
For x = 2 To 15000
If Cells(x, "U") = MyVars Then
Cells(x, "A").Resize(, 24).Copy
Application.ScreenUpdating = True
pastesheet.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial xlPasteFormulasAndNumberFormats
End If
Next x
End With
pastesheet.Select
Range("$B$6").Select
Beep
MsgBox "Search Complete"
End Sub
答案 0 :(得分:0)
你可能在U列的某处出现了导致类型不匹配的错误值。
请尝试使用此代码:
If copysheet.Cells(x, "U").Text = MyVars.Text Then
顺便说一下,你有With copysheet.Range("U:U")
... End With
行,但实际上并没有使用With
。
答案 1 :(得分:0)
这是我修复类型不匹配并使代码更高效的方法。使用With预先限定对象和For Each循环有助于像以前一样使用For x =#to#循环。如果这对您不起作用,请告诉我。
Sub Search()
'Macro
Application.ScreenUpdating = False
Dim copysheet As Worksheet
Dim pastesheet As Worksheet
Dim MyVars As Range
Dim Myline As Range
Dim MyRange As Range
Set copysheet = Worksheets("RawData")
Set pastesheet = Worksheets("SEARCH")
Set MyVars = copysheet.Range("$Y$1")
pastesheet.Range("$A$12:$Q$5000").ClearContents
'Search According to criteria
With copysheet
Set MyRange = .Range(.Cells(2, 21), .Cells(15000, 21))
For Each Myline in MyRange
If Myline.Value = MyVars Then
.Range(.Cells(Myline.Row, 1), .Cells(Myline.Row, 24)).Copy pastesheet.Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial xlPasteFormulasAndNumberFormats
End If
Next Myline
End With
pastesheet.Activate
Range("$B$6").Select
Beep
MsgBox "Search Complete"
Application.ScreenUpdating = True
End Sub