VBA初心者です。回答を検索しましたが、役立つものは見つかりませんでした。Excel タブにグラフがあります。渡したパラメータに基づいてグラフの Y 軸を動的に更新したいので、VBA モジュールで簡単なマクロを作成しました (グラフの特定の日付の後にゼロの系列があるので、 Excel に自動軸を選択させるだけです)。マクロは、手動で (ボタンなどを使用して) 呼び出すと正常に動作しますが、ユーザーが [Fill Strategy] タブまたは [Report] タブを選択するたびに呼び出されるようにしたいと考えています。Worksheet_Activate コード (以下を参照) を使用していますが、"UpdateChartAxes" の "Sheets("Fill Strategy").Select" および "Sheets("Report").Select" ポーションが原因で無限ループに陥ります。 " マクロ (基本的に、Worksheet_Activate コードを何度も呼び出します)。この問題を解決するにはどうすればよいですか? selectステートメントを必要としないように「UpdateChartAxes」コードを再設計する方法はありますか? どんな助けでも大歓迎です。
「Fill Strategy」および「Report」タブ モジュールのコード:
Private Sub Worksheet_Activate()
Call UpdateChartAxes
End Sub
開いているモジュールのコード:
Public Sub UpdateChartAxes()
Application.ScreenUpdating = False
Call ShowSheets
'WorkforceReportChart
Dim WorkforceReportChartMin As Long
Dim WorkforceReportChartMax As Long
Sheets("Chart Data").Select
WorkforceReportChartMin = WorksheetFunction.min(Range("ReportGraphDataRangeExcludingHistoricSeries")) * 0.95
WorkforceReportChartMax = WorksheetFunction.Max(Range("ReportGraphDataRangeExcludingHistoricSeries")) * 1.05
Sheets("Report").Select
With ActiveSheet.ChartObjects("WorkforceReportChart").Chart
With .Axes(xlValue)
.MinimumScale = WorkforceReportChartMin
.MaximumScale = WorkforceReportChartMax
End With
End With
'FillStrategyChart
Dim FillStrategyChartMin As Long
Dim FillStrategyChartMax As Long
Sheets("Chart Data").Select
FillStrategyChartMin = WorksheetFunction.min(Range("FillStrategyGraphDataRangeExcludingHistoricSeries")) * 0.95
FillStrategyChartMax = WorksheetFunction.Max(Range("FillStrategyGraphDataRangeExcludingHistoricSeries")) * 1.05
Sheets("Fill Strategy").Select
With ActiveSheet.ChartObjects("FillStrategyChart").Chart
With .Axes(xlValue)
.MinimumScale = FillStrategyChartMin
.MaximumScale = FillStrategyChartMax
End With
End With
Call HideSheets
End Sub