Vba 运行时错误';1004';:运行以下代码时出现应用程序定义或对象定义错误

Vba 运行时错误';1004';:运行以下代码时出现应用程序定义或对象定义错误,vba,excel,Vba,Excel,当自动筛选时,并没有数据或只有一种类型的数据,我得到的错误就行了 Set rang = rang.Resize(rang.Rows.Count - 1) 在下面的代码中,我只有标准2中的数据 Dim rang As Range Set sh = Worksheets("ExampleSheet") sh.Select Range("A1").Select Selection.AutoFilter sh.UsedRa

当自动筛选时,并没有数据或只有一种类型的数据,我得到的错误就行了

 Set rang = rang.Resize(rang.Rows.Count - 1)
在下面的代码中,我只有标准2中的数据

Dim rang As Range
    Set sh = Worksheets("ExampleSheet")
           sh.Select
        Range("A1").Select
        Selection.AutoFilter
        sh.UsedRange.AutoFilter Field:=10, Criteria1:= _
            "=*Criteria1*", VisibleDropDown:=False
        Set rang = sh.UsedRange.Offset(1, 0)
        Set rang = rang.Resize(rang.Rows.Count - 1)
        On Error Resume Next
        Set rang = rang.SpecialCells(xlCellTypeVisible)
        If Err.Number = 0 Then
        rang.Select
        rang.Copy
        Sheets("Criteria2").Select
        Range("A1").Select
          ActiveCell.Offset(1, 0).Select
        ActiveSheet.Paste
          sh.Select
        Selection.Delete Shift:=xlUp
        End If
        On Error GoTo 0

       sh.Cells.AutoFilter
        Application.CutCopyMode = False



           sh.Select
        Range("A1").Select
        Selection.AutoFilter
        sh.UsedRange.AutoFilter Field:=10, Criteria1:= _
            "=*Criteria2*", VisibleDropDown:=False
        Set rang = sh.UsedRange.Offset(1, 0)
        Set rang = rang.Resize(rang.Rows.Count - 1)
        On Error Resume Next
        Set rang = rang.SpecialCells(xlCellTypeVisible)
        If Err.Number = 0 Then
        rang.Select
        rang.Copy
        Sheets("Criteria2").Select
        Range("A1").Select
          ActiveCell.Offset(1, 0).Select
        ActiveSheet.Paste
          sh.Select
        Selection.Delete Shift:=xlUp
        End If
        On Error GoTo 0

      sh.Cells.AutoFilter
        Application.CutCopyMode = False
子副本()
作为范围显示的尺寸,作为范围显示的尺寸
将sht变暗为工作表
设置sht=图纸(“所有数据”)

sht.Range(“A1”).AutoFilter”错误在哪一行?在这一行中,设置rang=rang.RESIGH(rang.Rows.Count-1)在自动筛选步骤(假设UsedRange始终>1行)仍然不工作之前执行该操作。此外,我将此代码放在上面两次还有另一个标准您是在累积添加过滤器,还是在每个过滤器之间重置?这是有效的,现在尝试重复,我如何循环所有22个不同的标准我应该使用高级标准方法吗?,但是我没有所有的标准,所以现在我必须将剩余的数据复制到一张表中。即使我重复了多个标准,这种方法仍然有效,我所做的唯一更改是在每个标准之后设置rngcopy=Nothing,但是如果我将其设置为rngcopy=Nothing,则rangcopy值将为Nothing或空范围(Nothing)对不起,是的,我忘了把那行代码添加到Nothing'Ah'到Nothing'我做的是=Nothing,谢谢你的帮助
Sub CopyCopy()

    Dim rngUsed As Range, rngCopy As Range
    Dim sht As Worksheet

    Set sht = Sheets("All Data")


    sht.Range("A1").AutoFilter '<<clear any previous filtering
    Set rngUsed = sht.Range("A1").CurrentRegion

    rngUsed.AutoFilter Field:=10, Criteria1:= _
        "=*Criteria2*", VisibleDropDown:=False

    On Error Resume Next
    With rngUsed.Offset(1, 0).Resize(rngUsed.Rows.Count - 1)
        'any visisble rows?
        Set rngCopy = .SpecialCells(xlCellTypeVisible)
    End With
    On Error GoTo 0

    If Not rngCopy Is Nothing Then
        rngCopy.Copy Sheets("Criteria2").Range("A2")
        rngCopy.Delete Shift:=xlUp
        Set rngCopy = Nothing '<<< clear range variable
    End If
    sht.Range("A1").AutoFilter '<<clear any filtering

    'repeat with other criteria or create a loop

End Sub