Пытаюсь создать макрос для написания диаграмм посредством макрорекордера и последующим изменением того, что получилось. Макрос, который получился в итоге, работает, но очень нестабильно: иногда создает верные диаграммы, иногда неправильно берет диапазоны. Можно ли как-то исправить эту проблему?
Код
Sub График_паутинка()
'
' График_паутинка Макрос
'
'
Application.ScreenUpdating = False
Dim i As Long
For i = 4 To 7
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlRadar
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "=Паутинка!$C$1"
ActiveChart.SeriesCollection(1).Values = Range(Cells(i, 3), Cells(i, 17))
ActiveChart.SeriesCollection(1).XValues = "=Паутинка!$C$2:$Q$2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Name = "=Паутинка!$R$1"
ActiveChart.SeriesCollection(2).Values = Range(Cells(i, 18), Cells(i, 32))
ActiveChart.SeriesCollection(2).XValues = "=Паутинка!$R$2:$AF$2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).Name = "=Паутинка!$A$3"
ActiveChart.SeriesCollection(3).Values = "=Паутинка!$R$3:$AF$3"
ActiveChart.SeriesCollection(3).XValues = "=Паутинка!$R$2:$AF$2"
ActiveChart.ChartArea.Select
ActiveChart.Axes(xlValue).MaximumScale = 3
ActiveChart.ApplyLayout (1)
ActiveChart.ChartTitle.Select
ActiveChart.ChartTitle.Text = Cells(i, 1) 'название диаграммы
Next
Application.ScreenUpdating = True
End Sub
макрос для написания диаграмм посредством макрорекордера
Вы пытаетесь построить диаграммы на этом же листе или на отдельном? Объект Chart используется для диаграмм на отдельном листе, для встроенных диаграмм используйте объект ChartObject
На этом же листе. Получившийся макрос строит их на этом же листе в одну точку (готовые диаграммы накладываются на друг друга), но почему-то не всегда (точнее довольно редко) правильно берет диапазоны значений.
У вас более новая версия Excel, поэтому я не могу проверить ваш макрос. Про создание диаграмм можно почитать в книге Билл Джелен "VBA и макросы в Microsoft Office Excel 2007", из-во Вильямс
Там в примерах к главе 11 есть файл ProjectFilesCharting2003.xls (на английском) Это из книги "Применение VBA и Макросов в Microsoft Excel" Билл Джелен 2006г (на русском языке) Эту книгу можно скачать из интернета
Как бы странно это не звучало, условие корректной работы: выделенная ячейка до запуска макроса должна быть вне данных. Или можно вставить в макрос следующую строчку (перед началом цикла):
Код
Range("AH1").Select 'выделенная ячейка должна быть вне данных