0

昨日、Microsoft Object フォルダー内とシート内に VBA コードを書き、Worksheets_PivotTableUpdate イベントとプライベート サブルーチンを使用してフィルター処理した後、ピボット グラフを再フォーマットしました。それはうまく機能していました!

昨日ファイルを閉じて再度開いたところ、ファイルはなくなり、VBA が開いているときに機能していたにもかかわらず、フィルタリングによってコードがトリガーされませんでした。私はシートを見に行きましたが、そこにはコードがありません。保存するのを忘れたか、間違って保存したと思ったので、もう一度書き直して、今朝ファイルを再度開いたときに... コードをフィルタリングした後の書式設定が機能せず、コードが見つかりません。それで... どこですか?貯まらないのはなぜ?

複数の人がこのファイルを使用するため、必要なたびにやり直すことはできません。さらに、ファイルを閉じたり再度開いたりするたびに消えるのは意味がありません。VBA、特にピボットテーブル/チャートを操作するためのコードをたくさん知っていますが、それでも自分は初心者だと思います。

コードを書き直しますので、完成したら投稿します。これは、ピボット チャートを元にフォーマットするコードです。シート コードは、データ ラベルを読み取り、いくつかの境界線を追加し、ドーナツ ホールのサイズを変更します。

編集:私は問題を理解しましたが、それはばかげています。ブック マクロを実行すると、他のコードが保存されているシートが削除されます。これが私の新しい質問です...これが起こらないように、他にどのようにこれを保存できますか?

Dim pc_utl As Chart Dim chart_rng_2 As Range Set chart_rng_2 = wsu.Range("B10:F35") 'ドーナツ チャートをシートに配置する場所

With chart_rng_2
    Set pc_utl = wsu.ChartObjects.Add(Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Chart 'Creates donut chart if it doesn't exist already
End With

Application.ScreenUpdating = True

With pc_utl
    .ChartType = xlDoughnut 'Sets chart type to donut
    .ApplyDataLabels Type:=xlDataLabelsShowPercent 'Labels donut slices with % data from PTable
    .HasTitle = True
    .ChartTitle.Text = title_formula_2 'Dynamic chart title
    .Legend.Position = xlLegendPositionBottom
    .PlotBy = xlColumns
    .DoughnutGroups(1).DoughnutHoleSize = 25
End With
Else 'Refresh PivotTable and PivotChart if they exist already
    pt_utl.ChangePivotCache pivot_cache_2
    pt_utl.RefreshTable
End If

シートに保存されているコードは次のとおりです。

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
If Target = "%Utilization" Then
    With Worksheets("Utilization")
        With .ChartObjects("Chart 1").Chart
            .ApplyDataLabels Type:=xlDataLabelsShowPercent
        End With
    End With
End If

End Sub


4

0 に答える 0