Как изменить параметры диаграммы Excel из VBA.

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Аватара пользователя
Timofey
Сообщения: 32
Зарегистрирован: 28 апр 2006, 11:42
Откуда: Владивосток
Контактная информация:

Проблема такая.
Есть данные (40 столбцов, 10000 строк), которые могут меняться почти случайным образом. Их надо анализировать сравнивая столбцы друг с другом. Проще всего это делать при помощи диаграммы. Каким образом можно поменять параметры диаграммы (добавить/удалить ряд, обновить), которая была бы на одном листе с данными?
Менять данные в ручную долго. Потому что нельзя предсказать какое количество и какие столбцы надо сравнить. Ряды надо добавлять, удалять сравнивая друг с другом. При анализе одной выборки может понадобитя несколько сотен изменений. Выносить диаграмму на отдельный лист тоже не хотелось бы.
Код который определяет какой столбец надо добавить/удалить и передавал бы эти параметры диаграмме я состряпаю, только не могу позиционироваться на определённой диаграмме (их у меня несколько, на нескольких листах) и впихнуть в неё новые данные. Пробовал через конструктор макросов, толку никакого нет. При попытке запустить такой макрос VBA выдаёт ошибку. Все попытки подкорректировать макрос , тоже без успешные.
Кто сталкивался с этим помогите.

P.S.
Кстати, подобное нашёл на форуме, но... опять ошибка.
forum/topic5408.html
Аватара пользователя
Timofey
Сообщения: 32
Зарегистрирован: 28 апр 2006, 11:42
Откуда: Владивосток
Контактная информация:

Спасибо Avsha!

Кому надо пользуйтесь:

Worksheets(2).ChartObjects(1).Chart.SetSourceData Sheets("n").Range("AD11:AE2005,M11:M2005"), xlColumns

Подставьте нужные номера листа и диаграммы, или их имена, введите нужный диапазон.
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Timofey,
делал недавно похожую конструкцию для подмены данных в диаграмме
если интересно, посмотрите...

http://avsha.narod.ru/Excel_Chart.rar

диаграмма настроена на статичный определенный диапазон,
а данные в этот диапазон попадают с использованием функции ИНДЕКС() из основного диапазона данных.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Совет:

Так как чаще всего не хватает знания о том как называются нужные свойства, методы и константы, то удобно делать следующее:
1) В VBA через Tools/References добавьте в проект ссылку на Microsoft Graph XX Object library
2) Нажмите F2 - появится Object Browser
3) Изучите с помощью Object Browser названия свойств и методов - в большинстве случаев название интуитивно понятно
(Большинство, к сожалению, это не 90% а несколько меньше, но этот простой совет позволяет в кратчайшие сроки получить наиболее поллное представление о нужном классе)
Кроме того, такая подгрузка библиотек в некотором роде помогает при редактировании исходного кода.
Объявите переменную, например, не просто Object (или Variant) а конкретно - Graph.Series, напрмиер. И все идентификаторы будут появляться в подстрочнике после использования этой переменной.
Ответить