Цель этого кода - создать диаграмму на новом листе, что он и делает. После этого, когда я нажимаю кнопку, чтобы снова сгенерировать диаграмму на новом рабочем листе с таким же именем, он должен удалить этот лист и создать новую сгенерированную диаграмму.
Он создает диаграмму, но когда я go возвращается к нажатию кнопки, он генерирует диаграмму на листе, где находится кнопка, и выдает ошибку 91: переменная объекта или переменная блока не задана.
Отладка указывает мне следующую строку:
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Demand Line Chart"
Ниже приведен код:
Sub HistoricalDemand()
' Creates a line chart for the demand column
For Each ws In Worksheets
If ws.Name = "Demand Line Chart" Then
Application.DisplayAlerts = False
Sheets("Demand Line Chart").Delete
Application.DisplayAlerts = True
Exit For
End If
Next
Columns("A:A").Select
Selection.NumberFormat = "[$-en-US]mmm-yy;@"
Range("A:A,E:E").Select
ActiveSheet.Shapes.AddChart2(332, xlLineMarkers).Select
' Try With command here
ActiveChart.SetSourceData Source:=Range("A:A,E:E")
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Demand Line Chart"
' Places line chart in a new worksheet called Demand Line Chart
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.Orientation = 70
Selection.MajorTickMark = xlNone
With ActiveChart
.Axes(xlCategory).Select
.Axes(xlCategory).MajorUnit = 2
.ChartTitle.Select
.ChartTitle.Text = "Historical Demand"
.SetElement (msoElementLegendRight)
Selection.Format.TextFrame2.TextRange.Characters.Text = "Historical Demand"
With Selection.Format.TextFrame2.TextRange.Characters(1, 17).ParagraphFormat
.TextDirection = msoTextDirectionLeftToRight
.Alignment = msoAlignCenter
End With
ActiveChart.ChartArea.Select
End With
End Sub