Chart.SetSourceData ожидает диапазон в качестве источника.
Если в коде есть ошибка, а переменная, которая содержит Range, установлена на значение Nothing
, то в какой-то момент это приведет либо к ошибке, либо к аварийному завершению Excel.
Мой вопрос в следующем коде: почему использование Object
вместо Chart
объекта имеет другое поведение и почему происходит сбой Excel?
Private Sub Test()
Dim Workbook As Excel.Workbook
Dim Worksheet As Excel.Worksheet
Dim Shapes As Excel.Shapes
Dim Shape As Excel.Shape
Dim Object As Object
Dim Chart As Excel.Chart
Set Workbook = Excel.ThisWorkbook
Set Worksheet = Workbook.ActiveSheet
Set Shapes = Worksheet.Shapes
Set Shape = Shapes.AddChart
Set Object = Shape.Chart
On Error Resume Next
Object.SetSourceData Source:=Nothing ' Throws run-time error
On Error GoTo 0
Set Chart = Shape.Chart
Chart.SetSourceData Source:=Nothing ' Crashes Excel regardless of using error handling or not
End Sub