每次刷新資料透視圖時,它都會遺失其格式。所以我有一段 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