我有这个代码。它循环遍历筛选条件的列表,然后如果没有要选择的数据再次显示所有数据并循环到下一个条件。如果它显示数据结束(slDown)并选择显示的所有数据,则将其复制并粘贴到另一个工作表中。
清理脚本清除所有空白行和列,然后返回到原始数据表并删除为复制粘贴选择的数据。
问题在于只有一行。它移动到带有数据的行,但是当我结束(xlDown)时,它一直射到底部,然后粘贴会导致宏冻结。
我嵌套了另一个if语句来捕获是否只有一行数据可见,但是我无法让它正常运行。有关嵌套if语句的任何建议吗?
Horse
答案 0 :(得分:1)
我明白了......这就是我所做的。谢谢大家!
我使用了这个如果ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Areas.Count< = 2 而不是这个(ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell))= 2
Dim criteria As String
Dim F As Range
Set Rng = Sheets("Reference").Range("W2:W36")
For Each F In Rng
criteria = F
ActiveSheet.Range("$AV$1").AutoFilter Field:=48, Criteria1:="=*BULK SUBSERVIENT*", Operator:=xlAnd
ActiveSheet.Range("$K$1").AutoFilter Field:=11, Criteria1:=criteria
Range("A2:CM" & ActiveSheet.UsedRange.Rows.Count + 1) _
.Cells.SpecialCells(xlCellTypeVisible).Rows(1).Select
If ActiveCell.Value = vbNullString Then
ActiveSheet.ShowAllData
Else
If ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Areas.Count <= 2 Then
'Range(Selection).Select
Selection.Copy
Sheets("Bulk Subservient").Select
ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
Call cleanup
Else
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Bulk Subservient").Select
ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
Call cleanup
End If
End If
Next F