Почему Chart.SetSourceData Source: = ничего не вылетает в Excel? - PullRequest
0 голосов
/ 07 июня 2019

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
...