VBA新手在这里。我搜查了答复,但我找不到任何有用的东西。我在Excel选项卡中有一个图表。我希望图表的Y轴根据传入的参数进行动态更新,所以我在VBA模块中编写了一个简单的宏来实现这一点(我在图表中的某个日期后有一系列的零点,所以我可以'让Excel选择一个自动轴)。当我手动调用它(例如通过按钮)时,宏可以正常工作,但是我希望每次用户选择“填充策略”或“报告”选项卡时都会调用该宏。我使用了Worksheet_Activate代码(见下面),但由于“Sheets(”Fill Strategy“),我陷入了无限循环。选择”和“Sheets(”Report“)。选择”UpdateChartAxes “宏(实质上一次又一次地调用我的Worksheet_Activate代码)。我如何解决这个问题?有没有办法重新设计“UpdateChartAxes”代码,以便它不需要选择语句?任何帮助,将不胜感激。工作表激活无限循环
代码中的 “填充策略” 和 “报告” 选项卡模块:
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
你不应该使用'*。选择..主动 ..'在宏。尤其不是那些与Activate事件交互的人。 –
RBarryYoung