Excel VBA:차트 시리즈가 있는지 확인하고, 계속하지 않으면 확인하세요.

Excel VBA:차트 시리즈가 있는지 확인하고, 계속하지 않으면 확인하세요.

피벗 차트를 새로 고칠 때마다 서식이 손실됩니다. 따라서 페이지를 새로 고칠 때마다 그래프 형식을 다시 지정하는 VBA 코드가 있습니다.

Private Sub Worksheet_Calculate()
    ActiveSheet.ChartObjects("Chart 3").Activate
    ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
    ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
    ActiveChart.Deselect
End Sub

그래프 유형은 콤보형이며, "한계"라는 시계열을 제외한 모든 시계열이 누적됩니다. 위의 코드는 "Limit" 시리즈가 데이터 세트에 있는 한 작동합니다. 사용자가 데이터 세트에서 시계열 제한을 제거하는 필터나 슬라이서를 선택하면 Excel에서 오류가 발생합니다.

형식을 선택적으로 만들어야 합니다.

시리즈가 존재하는지 테스트해 보았습니다. 그러나 그것은 제대로 작동하지 않습니다.

Private Sub Worksheet_Calculate()
    ActiveSheet.ChartObjects("Chart 3").Activate
    ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked

    If ActiveChart.FullSeriesCollection("Limit") Is Nothing Then "do nothing here"
    Else ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
    End If    

    ActiveChart.Deselect
End Sub

VBA가 "한계" 시리즈가 존재하지 않는 경우 이를 건너뛰도록 하려면 어떻게 해야 합니까?

답변1

한 가지 방법은 오류를 무시하는 것입니다. 당신은 그것을 할 수 있습니다오류 시성명:

Private Sub Worksheet_Calculate()
    On Error GoTo Finish
    Dim Nope As Integer
    ActiveSheet.ChartObjects("Chart 3").Activate
    ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
    ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
    ActiveChart.Deselect
Finish:
    On Error GoTo 0
End Sub

On Error GoTo 0모든 오류 처리를 취소하고 정상적으로 관리하라고 지시합니다 .

On Error Resume Next다음 대신 상단에서 사용할 수도 있습니다 GoTo Finish.

Private Sub Worksheet_Calculate()
    On Error Resume Next
    Dim Nope As Integer
    ActiveSheet.ChartObjects("Chart 3").Activate
    ActiveChart.FullSeriesCollection(1).ChartType = xlColumnStacked
    ActiveChart.FullSeriesCollection("Limit").ChartType = xlLine
    ActiveChart.Deselect
End Sub

관련 정보