IF语句Excel VBA

strTemp = ActiveSheet.PivotTables("BreakCon").PivotFields("Service Type").PivotItems("International Data") If Err = 0 Then FieldExists = True Else FieldExists = False If FieldExists = True Then With ActiveSheet.PivotTables("BreakCon").PivotFields("Service Type") .PivotItems("International Data").Visible = False .PivotItems("Non Contracted").Visible = False ElseIf FieldExists = False Then With ActiveSheet.PivotTables("BreakCon").PivotFields("Service Type") .PivotItems("Non Contracted").Visible = False Else MsgBox ("Error") End If 

有时,通过代码传递的数据有“国际数据”,但偶尔也不会,所以我添加了这个If语句来检查“国际数据”是否在数据透视表中,如果不是,那么转到下一个if语句。 任何人都可以看到这个代码的问题? 我已经尝试了所有我知道的方式,但却遇到了砖墙! 干杯!

唯一的方法是(AFAIK)循环透视数据透视表中的透视项目,并检查是否存在所需的项目。

我还假设在你的上面的代码中,你可能会使用On Error Resume Next来暴力破解你的问题,但下面的方法是使用内置的VBAfunction顺利处理问题的优势。

见下文:

 Dim pt as PivotTable Dim pf as PivotField Dim pi as PivotItem Set pt = Worksheet("mySheet").PivotTables("BreakCon") Set pf = pt.PivotFields("Service Type") For each pi in pf.PivotItems If pi.Name = "International Data" Then pf.PivotItems("International Data").Visible = False Exit For End If Next pf.PivotItems("Non Contracted").Visible = False