2016-05-09 29 views
0

私はこのVBAコードを持っています。私は失敗した行を見たとき、それはvba "アプリケーション定義またはオブジェクト定義のエラー"と "コンテキストがコンテキストで定義されていません"

アプリケーション定義またはオブジェクト定義のエラー

を返し、それは基本的文脈

を定義していない

表現と言いますこのマクロは、ピボットテーブルフィルタを1つずつではなく複数のグループで選択できるようにするものです。以下はコードですが、どんな助力も強く評価されます。

Sub AdvancedFilter1() 
    Dim ws 
    Set ws = Workbooks("Bayer IB.xlsm").Worksheets("Pivots") 
    ws.Activate 
    Dim pv3 
    Dim pv4 
    Set pv3 = ws.PivotTables("PivotTable3").PivotFields("Shipped Date FY") 
    Set pv4 = ws.PivotTables("PivotTable4").PivotFields("Shipped Date FY") 
    Workbooks("Bayer IB.xlsm").Worksheets("Pivots").Activate 
    If ws.Range("B1").Activate Then 
     If ActiveCell.Value = "10" Then 
     With pv3 
     .PivotItems("2007").Visible = True 
     .PivotItems("2008").Visible = True 
     .PivotItems("2009").Visible = True 
     .PivotItems("2010").Visible = True 
     .PivotItems("2011").Visible = True 
     .PivotItems("2012").Visible = True 
     .PivotItems("2013").Visible = True 
     .PivotItems("2014").Visible = True 
     .PivotItems("2015").Visible = True 
     .PivotItems("2016").Visible = True 
      End With 

     ElseIf ActiveCell.Value = "2" Then 
     With pv3 
     .PivotItems("2007").Visible = False 
     .PivotItems("2008").Visible = False 
     .PivotItems("2009").Visible = False 
     .PivotItems("2010").Visible = False 
     .PivotItems("2011").Visible = False 
     .PivotItems("2012").Visible = False 
     .PivotItems("2013").Visible = False 
     .PivotItems("2014").Visible = False 
     .PivotItems("2015").Visible = True 
     .PivotItems("2016").Visible = True 
      End With 


    End If 
    End If 

End Sub 

Private Sub Worksheet_Change(ByVal Target As Range) 

    Select Case Target.Address 

    Case "$B$1" 
     If Target = "10" Then 
     Call AdvancedFilter1 


     ElseIf Target = "2" Then 
     Call AdvancedFilter1 

     ElseIf Target = "3" Then 
     Call AdvancedFilter1 


     ElseIf Target = "5" Then 
     Call AdvancedFilter1 

     ElseIf Target = "7" Then 
     Call AdvancedFilter1 

     End If 
     'TO PREVENT AUTOMATIC REDIRECT TO 'J3' 
     Range("B1").Select 


    End Select 

End Sub 
+2

'Range(" B1 ")。それは' case'か 'else else'の外にあるべきですか?ワークブック( "Bayer IB.xlsm")、ワークシート( "Pivots")、Activate'は必要ありません。エラーを投げている行を指定すると役立ちます。 – findwindow

+0

範囲( "B1")。選択範囲外です。 Visible = Trueは、ワークシートで「10」または「2」を選択した場合にエラーをスローします。これは、ピボットアイテム(「2007」)のいずれかです。 – JessX

+0

'PivotItems(" 2007 ")は存在しますか? 'Range(" B1 ")。select'は' case文 'の中にあります。 – findwindow

答えて

0

この質問に更新を加えたいだけです...私は別のファイルで同じコードを使用していました。私はまだそれが動作しない理由はまだ分かっていませんが、このコードは別のワークブックにはありますが、現在作業中です...

これと@ findwindowのアシスタントを読んでいただきありがとうございました。

関連する問題