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