昨日、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