VBA 신참 여기에. 나는 응답을 검색했지만 유용한 것을 찾을 수 없었다. Excel 탭에 차트가 있습니다. 차트의 Y 축을 전달하는 매개 변수에 따라 동적으로 업데이트해야하므로 VBA 모듈에서 수행 할 간단한 매크로를 작성했습니다 (차트의 특정 날짜 이후에 0이있는 시리즈가 있으므로 ' Excel에서 자동 축을 선택하게하십시오). 매크로는 수동으로 (예 : 버튼을 통해) 호출 할 때 제대로 작동하지만 사용자가 '채우기 전략'또는 '보고서'탭을 선택할 때마다 매크로가 호출되기를 원합니다. Worksheet_Activate 코드 (아래 참조)를 사용하고 있지만 "시트 ("채우기 전략 ")로 인해 무한 루프에 걸렸습니다."and "시트 ("보고서 ")를 선택하십시오."UpdateChartAxes "매크로 (본질적으로 Worksheet_Activate 코드를 반복해서 호출합니다). 이 문제를 어떻게 해결합니까? "UpdateChartAxes"코드를 재 설계하여 select 문이 필요하지 않은 방법이 있습니까? 어떤 도움을 주시면 감사하겠습니다. 은 "보고서"를 "전략 채우기"및 탭 모듈에워크 시트 무한 루프 활성화
코드 :
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
당신은 사용하지 말아야'* ALL 기타 사항 서보 -OFF .. 활성 ..' 매크로입니다. 특히 Activate 이벤트와 상호 작용하는 것은 아닙니다. –
RBarryYoung