我使用Excel 2016 VBA代码运行了一些场景,并遇到了一个我似乎无法解决的问题。所以,下面的代码执行此操作:
- 删除工作表上的所有现有过滤器"数据"
- 在表格上为表格应用新的过滤器"数据"以便 栏"位置"将根据细胞" G2"过滤价值(即"南")+列"数量"将包含仅非空白
- 选择现在过滤的数据范围+复制选择(屏幕截图中突出显示的整个潜在范围 - 即E5:F12)
- 激活工作表" Transit"并进入第一个空单元格 突出显示范围(A4:A10)
- 执行粘贴值+取消激活过滤 上一页
醇>
但它有效,但有一个重要的例外(如果重要的是,我从工作表Transit
启动代码)
在无需复制的情况下,它会复制所有内容(即整个"Data_range"
)。基于下面的截图,当位置"南"过滤后,没有非空行"数量"。在这样的场景中,它不是复制粘贴,而是反过来并且复制粘贴整个范围而不进行过滤。
我无法手动执行此类过程 - 是否有办法停止代码,以防万一找不到过滤匹配?还有其他方法可以避免这种过度粘贴吗?
Sub Copy()
On Error Resume Next
Worksheets("Data").ShowAllData
With Sheets("Data")
.Range("Items").AutoFilter Field:=2, Criteria1:=.Range("G2").Value
.Range("Items").AutoFilter Field:=5, Criteria1:="<>"
Application.Goto Reference:="Data_range"
Selection.Copy
Worksheets("Transit").Activate
For Each cell In Range("First_empty_row").Cells
If IsEmpty(cell) = True Then cell.Select: Exit For
Next cell
Selection.PasteSpecial Paste:=xlPasteValues
.Range("Items").AutoFilter Field:=2
.Range("Items").AutoFilter Field:=5
End With
End Sub