2016-06-24 8 views
0
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ステートメントに進みます。誰もこのコードの問題を見ることができますか?私は知っているすべての方法を試みたが、brickwallを打った!乾杯!IFステートメントExcel VBA

+0

? – Jordan

答えて

2

これを行う唯一の方法(AFAIK)は、ピボットフィールド内のピボットアイテムをループして、目的のアイテムが存在するかどうかを確認することです。

また、上記のコードでは、On Error Resumeを使用している可能性があります。問題の解決方法は次のとおりですが、VBAの機能をスムーズに処理する利点があります。

は、下記を参照してください:行でエラーが発生

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 
+1

そのスコットのための乾杯、ええ、私は最初にそれを走らせていた間に問題を回避するために一時的な方法を使用しましたが、あなたが与えたコードは素晴らしいです! – Crane92

関連する問題