搜索范围时类型不匹配

时间:2015-07-28 14:28:34

标签: excel vba excel-vba

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

2 个答案:

答案 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
相关问题