Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Оптимизация кода по сдвигу диапазонов диаграмм - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Оптимизация кода по сдвигу диапазонов диаграмм (Макросы/Sub)
Оптимизация кода по сдвигу диапазонов диаграмм
Sancho Дата: Пятница, 30.09.2016, 09:33 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 0 ±
Замечаний: 0% ±

2007, 2010, 2013
Всем привет!
В развитие темы http://www.excelworld.ru/forum/10-29463-1 решил поступить несколько иначе - не строить кучу диаграмм сразу, а перестраивать их диапазоны по требованию пользователя

[vba]
Код
ActiveSheet.ChartObjects("общая оценка").Activate
    ActiveChart.PlotArea.Select
    ActiveChart.SeriesCollection(1).Values = Лист10.Range(Лист10.Cells(r1, c1), Лист10.Cells(r2, c2))
    ActiveChart.SeriesCollection(1).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
    ActiveChart.SeriesCollection(2).Values = Лист10.Range(Лист10.Cells(r1, c1 - 1), Лист10.Cells(r2, c2 - 1))
    ActiveChart.SeriesCollection(2).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
    ActiveChart.SeriesCollection(3).Values = Лист10.Range(Лист10.Cells(r1, c1 - 2), Лист10.Cells(r2, c2 - 2))
    ActiveChart.SeriesCollection(3).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
[/vba]

Меня немного не устраивает набитый мною код, так как строки
[vba]
Код

    ActiveChart.SeriesCollection(1).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
    ActiveChart.SeriesCollection(2).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
    ActiveChart.SeriesCollection(3).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
[/vba]
по сути своей одинаковые и тянут одни и те же подписи значений. Если прописывать одной строкой на один ряд, например SeriesCollection(1), на остальных рядах подписи пропадают. Хотя когда вручную строим диаграмму нам достаточно выбрать подписи для одного ряда и подписи распространяются на остальные.
Возможно ли индексы оператора SeriesCollection"(1) (2) (3)" заменить на что то обобщающее, что бы в коде оставить одну строку отвечающую за подписи?
ЗЫ: вчера только смог заняться решением своего нерешенного вопроса (типа это отмазка от вопросов почему так долго).


Сообщение отредактировал Sancho - Пятница, 30.09.2016, 09:37
 
Ответить
СообщениеВсем привет!
В развитие темы http://www.excelworld.ru/forum/10-29463-1 решил поступить несколько иначе - не строить кучу диаграмм сразу, а перестраивать их диапазоны по требованию пользователя

[vba]
Код
ActiveSheet.ChartObjects("общая оценка").Activate
    ActiveChart.PlotArea.Select
    ActiveChart.SeriesCollection(1).Values = Лист10.Range(Лист10.Cells(r1, c1), Лист10.Cells(r2, c2))
    ActiveChart.SeriesCollection(1).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
    ActiveChart.SeriesCollection(2).Values = Лист10.Range(Лист10.Cells(r1, c1 - 1), Лист10.Cells(r2, c2 - 1))
    ActiveChart.SeriesCollection(2).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
    ActiveChart.SeriesCollection(3).Values = Лист10.Range(Лист10.Cells(r1, c1 - 2), Лист10.Cells(r2, c2 - 2))
    ActiveChart.SeriesCollection(3).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
[/vba]

Меня немного не устраивает набитый мною код, так как строки
[vba]
Код

    ActiveChart.SeriesCollection(1).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
    ActiveChart.SeriesCollection(2).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
    ActiveChart.SeriesCollection(3).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
[/vba]
по сути своей одинаковые и тянут одни и те же подписи значений. Если прописывать одной строкой на один ряд, например SeriesCollection(1), на остальных рядах подписи пропадают. Хотя когда вручную строим диаграмму нам достаточно выбрать подписи для одного ряда и подписи распространяются на остальные.
Возможно ли индексы оператора SeriesCollection"(1) (2) (3)" заменить на что то обобщающее, что бы в коде оставить одну строку отвечающую за подписи?
ЗЫ: вчера только смог заняться решением своего нерешенного вопроса (типа это отмазка от вопросов почему так долго).

Автор - Sancho
Дата добавления - 30.09.2016 в 09:33
buchlotnik Дата: Пятница, 30.09.2016, 10:03 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2049
Репутация: 613 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
А может просто циклом пройти?
[vba]
Код
For i = 1 to 3
    ActiveChart.SeriesCollection(i).Values = Лист10.Range(Лист10.Cells(r1, c1-i+1), Лист10.Cells(r2, c2-i+1))
    ActiveChart.SeriesCollection(i).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
next i
[/vba]


платная помощь:
ЯД: 410012595572239; WM: 311017577133
buchlotnik@mail.ru
 
Ответить
СообщениеА может просто циклом пройти?
[vba]
Код
For i = 1 to 3
    ActiveChart.SeriesCollection(i).Values = Лист10.Range(Лист10.Cells(r1, c1-i+1), Лист10.Cells(r2, c2-i+1))
    ActiveChart.SeriesCollection(i).XValues = Лист10.Range(Лист10.Cells(r1, c1 - 352), Лист10.Cells(r2, c2 - 352))
next i
[/vba]

Автор - buchlotnik
Дата добавления - 30.09.2016 в 10:03
Sancho Дата: Пятница, 30.09.2016, 10:16 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 0 ±
Замечаний: 0% ±

2007, 2010, 2013
buchlotnik, Хм, интересное решение, только боюсь, что будут установленные форматы рядов теряться, сейчас попробую. Спасибо.
 
Ответить
Сообщениеbuchlotnik, Хм, интересное решение, только боюсь, что будут установленные форматы рядов теряться, сейчас попробую. Спасибо.

Автор - Sancho
Дата добавления - 30.09.2016 в 10:16
Sancho Дата: Пятница, 30.09.2016, 10:23 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 0 ±
Замечаний: 0% ±

2007, 2010, 2013
buchlotnik, Все отлично, здорово, Спасибо еще раз!
 
Ответить
Сообщениеbuchlotnik, Все отлично, здорово, Спасибо еще раз!

Автор - Sancho
Дата добавления - 30.09.2016 в 10:23
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Оптимизация кода по сдвигу диапазонов диаграмм (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!