【发布时间】:2019-09-20 07:11:27
【问题描述】:
我在 VBA 中创建了在传输前过滤我的数据的代码,但我想添加一个额外的过滤器。
我会怎么做呢?
我尝试简单地在标准 1 下添加一行新值,但它不起作用。
With Wb1.Sheets(12)
If .AutoFilterMode Then .AutoFilterMode = False
.Range("$A$1:$AM" & .Cells(.Rows.Count, "A").End(xlUp).Row).AutoFilter Field:=19, _
Criteria1:="Test,Test"
Set rngToCopy = .AutoFilter.Range
End With
rngToCopy.Copy
wb2.Sheets(2).Range("$A1").PasteSpecial xlValues
End If
ThisWorkbook.RefreshAll
由于某种原因仍然存在问题,这是整个代码。当我执行时,我没有收到错误,但没有任何副本。
Sub CopyData()
On Error GoTo ErrorHandle
Application.ScreenUpdating = False
Dim Wb1 As Workbook, wb2 As Workbook, wB As Workbook
Dim rngToCopy As Range
For Each wB In Application.Workbooks
If Left(wB.Name, 21) = "Test_Test Test" Then
Set Wb1 = wB
Exit For
End If
Next
If Not Wb1 Is Nothing Then '<~~ check if you actually found the needed workbook
Set wb2 = ThisWorkbook
With Wb1.Sheets(12).Range("$A$1:$AM" & Cells(Rows.Count, "A").End(xlUp).Row)
If AutoFilterMode Then .AutoFilterMode = False
.AutoFilter Field:=19, Criteria1:="Test,Test"
.AutoFilter Field:=38, Criteria1:="Employee"
'do stuff
Set rngToCopy = .AutoFilter.Range
End With
rngToCopy.Copy
wb2.Sheets(2).Range("$A1").PasteSpecial xlValues
End If
ThisWorkbook.RefreshAll
【问题讨论】:
-
其他过滤条件是什么?在什么领域? (即您是否过滤同一列?)
-
参数略有不同但概念相同。它将是 Field: =38 和 Criteria2:="Employee"。我只是不确定语法。
-
我更新了答案;当我将您的 with 语句结合起来以包含范围时,我未能从
.Cells(.Rows中删除.,这是 copy_paste 的危险 -
感谢您的帮助,但仍有一些地方不太合适。我没有收到错误,但是当我运行宏时没有任何反应。我已经更新了问题以包含我的整个代码。有任何想法吗?谢谢。
标签: excel vba filtering autofilter