将代码应用于没有PageRange
属性的数据透视表时,代码将失败,并出现标题错误
我尝试将布尔变量应用于
sh.PivotTables(i).PageRange
但是那也不起作用
Sub TestPivotPaste2()
Dim wb As Workbook
Dim sh As Worksheet
Set wb = ActiveWorkbook
Set sh = wb.Worksheets(7)
c = sh.PivotTables.Count
If c > 0 Then
For i = 1 To c
If Not sh.PivotTables(i).PageRange.Count = 0 Then
Debug.Print c
Else
GoTo nextpiv
End If
nextpiv:
Next i
Else
MsgBox ("NoPivot")
End If
End Sub
预期结果是能够辨别PageRange属性为true或false的数据透视表,但仅在范围存在时才起作用。
答案 0 :(得分:0)
尝试此功能
Function pageRangeExists(pt as PivotTable) as Boolean
Dim test as Range
On Error Resume Next
Set test = pt.PageRange
On Error Go To 0
pageRangeExists = Not test Is Nothing
End Function
由于PageRange
是范围对象,因此您必须先测试该范围是否存在或有效,因为尝试对不存在的范围进行操作会产生错误。
因此,您的for loop
可以简化
For i = 1 To c
If pageRangeExists(sh.PivotTables(i)) Then
Debug.Print c
End If
Next i
GoTo
语句是多余的,因为它已经嵌入在for loop
中。