2017-10-25 25 views
0

選択したフィルタ(作業区)を変更すると、チャート・タイトルが更新されてそのワーク・センター名が表示されるピボット・チャートがあります。ただし、複数の選択を許可するためにチェックボックスをオンにすると、実際に選択されたアイテムのそれぞれを表示するのではなく、単にチャートのタイトルに「すべて」と表示されます。私はそれが私が探しているものを表示する方法を見つけていない。以下は、複数の項目を選択したとき、私はグラフのタイトルだけでなく、私が望む何複数の選択項目を表示するピボット・チャートのタイトル

Option Explicit 

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) 
    On Error Resume Next 
    Application.Run "'Prod_Tools.xlam'!gPTWCChange", Target.PivotFields("WorkCenter").CurrentPage 
    On Error GoTo 0 
End Sub 


Sub gPTWCChange(ByVal WC As String) 
    Dim wb1 As Workbook 
    Dim CPWB1 As Workbook 
    For Each wb1 In Workbooks 
     If InStr(1, wb1.Name, "Capacity Planning Rep", vbTextCompare) > 0 Then 
      Set CPWB1 = Workbooks(wb1.Name) 
      Exit For 
     End If 
    Next wb1 
    On Error Resume Next 
    CPWB1.Charts("Workcenter By Week").ChartTitle.Text = "Work Center: " & WC 
    On Error GoTo 0 
End Sub 

をそれを発射するフィルタ変更イベントのコードを更新するために使用しているコードは、チャートのタイトルを持っています「データ:Workcenter_A、Workcenter_B、Workcenter_F」のように見えます。

答えて

1

これはあなたの適応サブです。そのパラメータが変更されていることに注意してください。

Public Sub gPTWCChange(ByVal pfWC As Excel.PivotField) 
    Const sSEPARATOR As String = ", " 

    Dim sChartTitle As String 
    Dim oPivotItem As Excel.PivotItem 
    Dim lVisibleCount As Long 

    '... Your original code ... 
    Dim wb1 As Workbook 
    Dim CPWB1 As Workbook 
    For Each wb1 In Workbooks 
     If InStr(1, wb1.Name, "Capacity Planning Rep", vbTextCompare) > 0 Then 
      Set CPWB1 = Workbooks(wb1.Name) 
      Exit For 
     End If 
    Next wb1 

    '... New code to compute the chart title ...   
    If pfWC.EnableMultiplePageItems Then 
     'Build the chart title from the visible items in the PivotField. 
     lVisibleCount = 0 
     For Each oPivotItem In pfWC.PivotItems 
      If oPivotItem.Visible Then 
       lVisibleCount = lVisibleCount + 1 
       sChartTitle = sChartTitle & sSEPARATOR & oPivotItem.Caption 
      End If 
     Next 

     'Drop the leading separator. 
     sChartTitle = Mid$(sChartTitle, Len(sSEPARATOR) + 1) 

     'Manage plural. 
     sChartTitle = "Work Center" & IIf(lVisibleCount > 1, "s", "") & ": " & sChartTitle 
    Else 
     sChartTitle = "Work Center: " & pfWC.CurrentPage 
    End If 

    '... Your original code ... 
    On Error Resume Next   
    CPWB1.Charts("Workcenter By Week").ChartTitle.Text = sChartTitle 
    On Error GoTo 0 
End Sub 

そして、次のようにあなたのサブを呼び出す:

Application.Run "'Prod_Tools.xlam'!gPTWCChange", Target.PivotFields("WorkCenter") 

を原則は、あなたのサブPivotFieldオブジェクトへの参照を送信することで、そこから、そのEnableMultiplePageItemsプロパティを確認してください。

+0

ありがとうございます。それはまさに私が探していたもので、ちょうど把握できなかったものです:) –

関連する問題