Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Макрос для создания диаграмм
 
Добрый день!

Пытаюсь создать макрос для написания диаграмм посредством макрорекордера и последующим изменением того, что получилось. Макрос, который получился в итоге, работает, но очень нестабильно: иногда создает верные диаграммы, иногда неправильно берет диапазоны.
Можно ли как-то исправить эту проблему?


Код
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
Изменено: Эстеэрэль - 16 Ноя 2016 14:55:40
 
Цитата
макрос для написания диаграмм посредством макрорекордера
Вы пытаетесь построить диаграммы на этом же листе или на отдельном?
Объект Chart используется для диаграмм на отдельном листе, для встроенных
диаграмм используйте объект ChartObject
 
На этом же листе.
Получившийся макрос строит их на этом же листе в одну точку (готовые диаграммы накладываются на друг друга), но почему-то не всегда (точнее довольно редко) правильно берет диапазоны значений.
 
Вот сейчас построил всё верно.
Никак не могу понять при каких условиях он работает нормально, а при каких нет.
Изменено: Эстеэрэль - 16 Ноя 2016 14:56:01
 
У вас более новая версия Excel, поэтому я не могу проверить ваш макрос.
Про создание диаграмм можно почитать в книге Билл Джелен
"VBA и макросы в Microsoft Office Excel 2007", из-во Вильямс
 
Kuzmich, спасибо за рекомендацию книги!

Загрузила файл в формате Excel 97-2003 (в этом файле также сработал правильно).
 
Цитата
в этом файле также сработал правильно
В 2003 нет свойства
Код
    ActiveChart.ApplyLayout (1)
 
Похоже, сработал благодаря режиму совместимости.
 
У меня на эту строчку ругается
 
Вот без этой строчки.
 
У меня в 2003 ругается уже на первой строчке
Код
ActiveSheet.Shapes.AddChart.Select
 
Видимо, 2003 не нравятся любые команды, связанные с лентой, которая появилась в 2007.
Изменено: Эстеэрэль - 4 Ноя 2016 21:53:31
 
Если вы владеете английским, то можно скачать книгу Билла Джелена по ссылке http://excelvba.ru/books
 
Kuzmich, спасибо, но, к сожалению, my English is very bad=(
 
Так главное коды посмотреть
 
Скачала, попробую разобраться)
 
На сайте издательского дома Вильямс можно скачать примеры к книге
http://archive.williamspublishing.com/cgi-bin/materials.cgi?isbn=978-5-8459-1371-5
ваша глава 11
 
Kuzmich, большое спасибо!
 
Там в примерах к главе 11 есть файл ProjectFilesCharting2003.xls (на английском)
Это из книги "Применение VBA и Макросов в Microsoft Excel" Билл Джелен 2006г (на русском языке)
Эту книгу можно скачать из интернета
 
Kuzmich, и еще раз спасибо!)
 
Как бы странно это не звучало, условие корректной работы: выделенная ячейка до запуска макроса должна быть вне данных.
Или можно вставить в макрос следующую строчку (перед началом цикла):
Код
 Range("AH1").Select   'выделенная ячейка должна быть вне данных
Изменено: Эстеэрэль - 10 Ноя 2016 09:36:51
Страницы: 1
Читают тему (гостей: 1)
Наверх