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

如果「limit」系列不存在,我怎麼能讓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

相關內容