【发布时间】:2017-03-17 16:08:46
【问题描述】:
我正在尝试构建一个循环来选择数组中的不同名称并在高级过滤器中使用它们,以将过滤后的数据复制到不同的工作表中。调试说:过滤器有问题(我使用了录制工具)。
最后的想法是将这些过滤后的数据复制到 Outlook 电子邮件中,不过离那里还有些远。
知道为什么它不起作用吗?
Private Sub loopfilter()
Dim VersandRange As Range
Dim rng As Range
Dim Name As String
Set VersandRange = Range("J2", Cells(Rows.Count, "j").End(xlUp))
For Each rng In VersandRange
Worksheets("Filtro").Range("AK2") = rng.Value
Application.CutCopyMode = False
Worksheets("Alle gemahnten Posten (2)").Range("A1").CurrentRegion.AdvancedFilter Action _
:=xlFilterCopy, CriteriaRange:=Range("A1:AK2"), CopyToRange:=Range("A5"), _
Unique:=False
Range("a5").CurrentRegion.Copy
Worksheets.Add.Name = rng.Value
ActiveSheet.Range("A1").Paste
Next
End Sub
更新 1:
非常感谢您的提示
我今天早上一直在努力使它工作,调整参考。到目前为止,它看起来像这样:
Private Sub loopfilter()
Dim thisWB As Workbook
Dim filterws As Worksheet
Dim howto As Worksheet
Dim advfilter As Range
Dim Postenws As Worksheet
Dim VersandRange As Range
Dim rng As Range
Dim Name As String
Set thisWB = ThisWorkbook
Set filterws = thisWB.Sheets("Filtro")
Set howto = thisWB.Sheets("How to")
Set advfilter = filterws.Range("A1:AK2")
Set Postenws = thisWB.Sheets("Alle gemahnten Posten (2)")
Set VersandRange = howto.Range("J2", Cells(Rows.Count, "j").End(xlUp))
Dim newWS As Worksheet
For Each rng In VersandRange
filterws.Range("AK2") = rng.Value
Application.CutCopyMode = False
Postenws.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=advfilter, _
CopyToRange:=filterws.Range("A5"), _
Unique:=False
filterws.Range("a5").CurrentRegion.Copy
Set newWS = thisWB.Sheets.Add
newWS.Name = rng.Value
newWS.Range("A1").Paste
Next
我在 for 循环中的最后两行遇到了麻烦。
我试过了
Name = rng.value
newWS.Name = Name
但仍然无法正常工作。有什么想法吗?
【问题讨论】:
-
您的条件和 copytorange 没有工作表参考,这可能是个问题。你遇到了什么错误?