我正在使用以下代码在数据透视表的过滤器中循环浏览各个项目,然后复制过滤后的结果。
但是由于某些原因,代码无法解释没有结果的项目,而是代替了先前的结果。
我对项目的代码中有错误处理,这些项目将不会显示任何结果,但似乎不起作用-在遍历代码时,它会跳过我放置在其中的“ if”以捕获“无”
然后(当到达代码的复制/粘贴部分时)复制上一个循环中在过滤器中选择的最后一项下可见的(现已隐藏)单元格。
我错过了代码的结尾,因为它有点冗长,并且可以正常工作,只是可见单元格的一点点,我似乎无法正常工作。
Sub Bulletin_Chase()
Dim pt As PivotTable
Dim pi As PivotItem
Set pt = Worksheets("By User").PivotTables("PivotTable1")
Dim rng As Range
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
For Each pi In pt.PageFields("Supplier").PivotItems
pt.PageFields("Supplier").CurrentPage = pi.Name
With Range("Filters")
.AutoFilter Field:=2, Criteria1:=Array("false"), Operator:=xlFilterValues
End With
On Error Resume Next
Set rng = Worksheets("By User").Range("Bulletin_List").SpecialCells(xlCellTypeVisible)
If rng Is Nothing Then
Worksheets("By User").AutoFilterMode = False
Range("Filters").AutoFilter
GoTo Continue
End If
等...
真的为此感到挣扎,所以非常感谢您的才华。
答案 0 :(得分:0)
尝试设置rng时,如果没有可见的单元格,则分配失败,并跳至下一行代码。此过程不会将rng设置为Nothing。它只是不执行任何操作,而使rng保留上一次循环运行时的值。
最简单的解决方案是在尝试将rng分配给可见单元之前将其强制为空。这样,如果分配失败,则在测试rng = none时将成功检测到失败:
right: 10px;