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

Вход

Регистрация

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

 

= Мир MS Excel/Именованные диапазоны в диаграмме через VBA - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Именованные диапазоны в диаграмме через VBA (Макросы/Sub)
Именованные диапазоны в диаграмме через VBA
excelhelprus Дата: Понедельник, 07.03.2016, 18:24 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 5 ±
Замечаний: 20% ±

2015
Нужно, чтобы в новой книге появились именованные диапазоны и график строился опираясь на них. Чтобы в формулах рядов были именно именные диапазоны а не просто RANGE
Разными способами пробовал. Либо эксель с ошибкой вылетает (перезапустить программу предлагает)
Либо - вылетает дебаг, но если нажать продолжить - все работает исправно (через On Error обойти не получилось)
Кто сталкивался? Возможно, готовый образец есть у кого-то?
К сообщению приложен файл: TEST.xlsm (21.6 Kb)
 
Ответить
СообщениеНужно, чтобы в новой книге появились именованные диапазоны и график строился опираясь на них. Чтобы в формулах рядов были именно именные диапазоны а не просто RANGE
Разными способами пробовал. Либо эксель с ошибкой вылетает (перезапустить программу предлагает)
Либо - вылетает дебаг, но если нажать продолжить - все работает исправно (через On Error обойти не получилось)
Кто сталкивался? Возможно, готовый образец есть у кого-то?

Автор - excelhelprus
Дата добавления - 07.03.2016 в 18:24
StoTisteg Дата: Понедельник, 07.03.2016, 19:46 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код

Set Nwb = Workbooks.Add
With Nwb.Sheets("Отчет")
    Set ch = .ChartObjects.Add(Rng.Left, Rng.Top, Rng.Width, Rng.Height)
    ....
End With
...
ch.Chart.FullSeriesCollection(2).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
[/vba]
Разворачивая, получаем
[vba]
Код

Workbooks.Add.Sheets("Отчет").ChartObjects.Add(Rng.Left, Rng.Top, Rng.Width, Rng.Height).Chart.FullSeriesCollection(2).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
[/vba]
Я пока не вижу ни одной причины, по которой это может работать... Может я и не прав (а я мало что смыслю в диаграммах), но мне представляется, что Вы вставляете на пустой лист в сежесозданной книге диаграмму неопределённых (потому что rng вы определили для предыдущей книги) размеров и пытаетесь сделать с ней нечто...


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Понедельник, 07.03.2016, 19:52
 
Ответить
Сообщение[vba]
Код

Set Nwb = Workbooks.Add
With Nwb.Sheets("Отчет")
    Set ch = .ChartObjects.Add(Rng.Left, Rng.Top, Rng.Width, Rng.Height)
    ....
End With
...
ch.Chart.FullSeriesCollection(2).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
[/vba]
Разворачивая, получаем
[vba]
Код

Workbooks.Add.Sheets("Отчет").ChartObjects.Add(Rng.Left, Rng.Top, Rng.Width, Rng.Height).Chart.FullSeriesCollection(2).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
[/vba]
Я пока не вижу ни одной причины, по которой это может работать... Может я и не прав (а я мало что смыслю в диаграммах), но мне представляется, что Вы вставляете на пустой лист в сежесозданной книге диаграмму неопределённых (потому что rng вы определили для предыдущей книги) размеров и пытаетесь сделать с ней нечто...

Автор - StoTisteg
Дата добавления - 07.03.2016 в 19:46
excelhelprus Дата: Понедельник, 07.03.2016, 22:02 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 5 ±
Замечаний: 20% ±

2015
В макросе последнюю строку уберите, которая с именованными диапазонами и все будет работать. Поэтому да, тут немного не в тему Вы написали
 
Ответить
СообщениеВ макросе последнюю строку уберите, которая с именованными диапазонами и все будет работать. Поэтому да, тут немного не в тему Вы написали

Автор - excelhelprus
Дата добавления - 07.03.2016 в 22:02
StoTisteg Дата: Понедельник, 07.03.2016, 22:25 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Не знаю. Моя домашняя семёрка ругается на
[vba]
Код
ch.Chart.FullSeriesCollection(2).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
[/vba]
Поэтом закомментирование последней строки естественно, не помогает.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеНе знаю. Моя домашняя семёрка ругается на
[vba]
Код
ch.Chart.FullSeriesCollection(2).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
[/vba]
Поэтом закомментирование последней строки естественно, не помогает.

Автор - StoTisteg
Дата добавления - 07.03.2016 в 22:25
al-Ex Дата: Понедельник, 07.03.2016, 23:53 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 190
Репутация: 59 ±
Замечаний: 0% ±

Excel 2010
через On Error обойти не получилось)

конечно надо искать ошибку , но на ночь глядя и вот так пойдёт,.
в строчках где форматирование линии графика, ошибку исправил, но
в последней строчке ошибка осталась, не понял вообще зачем она.
через заплатку "On Error Resume Next" обошел.
посмотри файл.
К сообщению приложен файл: TEST000.xlsm (22.9 Kb)


Сообщение отредактировал al-Ex - Вторник, 08.03.2016, 00:48
 
Ответить
Сообщение
через On Error обойти не получилось)

конечно надо искать ошибку , но на ночь глядя и вот так пойдёт,.
в строчках где форматирование линии графика, ошибку исправил, но
в последней строчке ошибка осталась, не понял вообще зачем она.
через заплатку "On Error Resume Next" обошел.
посмотри файл.

Автор - al-Ex
Дата добавления - 07.03.2016 в 23:53
excelhelprus Дата: Вторник, 08.03.2016, 01:19 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 5 ±
Замечаний: 20% ±

2015
Запустил - так же вылетает Excel. перезагрузить или искать решение в интернете
 
Ответить
СообщениеЗапустил - так же вылетает Excel. перезагрузить или искать решение в интернете

Автор - excelhelprus
Дата добавления - 08.03.2016 в 01:19
excelhelprus Дата: Вторник, 08.03.2016, 01:20 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 5 ±
Замечаний: 20% ±

2015
А про On error - суть в том, что если последняя строка через Resume next выполнится - данные в диаграмме все равно не обновятся на нужные
 
Ответить
СообщениеА про On error - суть в том, что если последняя строка через Resume next выполнится - данные в диаграмме все равно не обновятся на нужные

Автор - excelhelprus
Дата добавления - 08.03.2016 в 01:20
excelhelprus Дата: Вторник, 08.03.2016, 19:22 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 5 ±
Замечаний: 20% ±

2015
Ни у кого идей нет?
Мне важно, чтобы получилась динамически изменяемая диаграмма в новой книге
Возможно, другим способом как то сделать?

Upd 22-00

Проблема частично решена путем присвоения ряду данных диаграммы значения статического диапазона, А затем переделки статического диапазона в динамический. Но теперь следующая проблема - При выполнении кода построчно через редактор - все отлично работает и создается красивая диаграмма с динамическими данными.
Но вот если запустить скрипт целиком сначала - Excel вылетает с ошибкой
Сигнатура проблемы:
Имя события проблемы: BEX64
Имя приложения: EXCEL.EXE
Версия приложения: 16.0.4312.1002
Отметка времени приложения: 56544c7e
Имя модуля с ошибкой: mso20win32client.dll
Версия модуля с ошибкой: 16.0.4312.1000
Отметка времени модуля с ошибкой: 56425ac5
Смещение исключения: 000000000010776a
Код исключения: c0000409
Данные исключения: 0000000000000000
Версия ОС: 6.3.9600.2.0.0.256.48
Код языка: 1049

Все обновления офиса последние с официального сайта.
Кто сталкивался с подобным?

UPD 22-30
Выяснилось, что даже не построчное выполнение помогает, а просто если приостановить выполнение макроса через Breakpoint до проблемной строки (5 с конца, где присвоение именованных диапазонов идет) и потом продолжить
Может как-то можно средствами VBA остановить макрос на Breakpoint, и сразу продолжить?
К сообщению приложен файл: 7236252.xlsm (22.2 Kb)


Сообщение отредактировал excelhelprus - Вторник, 08.03.2016, 21:36
 
Ответить
СообщениеНи у кого идей нет?
Мне важно, чтобы получилась динамически изменяемая диаграмма в новой книге
Возможно, другим способом как то сделать?

Upd 22-00

Проблема частично решена путем присвоения ряду данных диаграммы значения статического диапазона, А затем переделки статического диапазона в динамический. Но теперь следующая проблема - При выполнении кода построчно через редактор - все отлично работает и создается красивая диаграмма с динамическими данными.
Но вот если запустить скрипт целиком сначала - Excel вылетает с ошибкой
Сигнатура проблемы:
Имя события проблемы: BEX64
Имя приложения: EXCEL.EXE
Версия приложения: 16.0.4312.1002
Отметка времени приложения: 56544c7e
Имя модуля с ошибкой: mso20win32client.dll
Версия модуля с ошибкой: 16.0.4312.1000
Отметка времени модуля с ошибкой: 56425ac5
Смещение исключения: 000000000010776a
Код исключения: c0000409
Данные исключения: 0000000000000000
Версия ОС: 6.3.9600.2.0.0.256.48
Код языка: 1049

Все обновления офиса последние с официального сайта.
Кто сталкивался с подобным?

UPD 22-30
Выяснилось, что даже не построчное выполнение помогает, а просто если приостановить выполнение макроса через Breakpoint до проблемной строки (5 с конца, где присвоение именованных диапазонов идет) и потом продолжить
Может как-то можно средствами VBA остановить макрос на Breakpoint, и сразу продолжить?

Автор - excelhelprus
Дата добавления - 08.03.2016 в 19:22
StoTisteg Дата: Вторник, 08.03.2016, 21:23 | Сообщение № 9
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
То есть Вам нужна просто диаграмма, которая будет меняться при добавлении строк в таблицу? Так используйте ListObjects со строкой итогов и стройте диаграмму один раз по Worksheets(1).Range(1).


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеТо есть Вам нужна просто диаграмма, которая будет меняться при добавлении строк в таблицу? Так используйте ListObjects со строкой итогов и стройте диаграмму один раз по Worksheets(1).Range(1).

Автор - StoTisteg
Дата добавления - 08.03.2016 в 21:23
excelhelprus Дата: Среда, 09.03.2016, 09:48 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 5 ±
Замечаний: 20% ±

2015
Не совсем понял. Не могли бы Вы пример скинуть?
Upd
Понял, Вы так таблицы назвали. Тут совершенно тоже самое, что и с диапазонами.
При первичном присвоении SourceData график просто фиксированный диапазон таблицы берет в качестве данных.
А при изменении ряда данных на столбец таблицы - так же вылетает.

+ ко всему выяснилось, что мой код работает только для 16 версии Excel
В других версиях, почему то начинает ругаться уже там, где цвет для ряда меняется

У кого то есть примеры построения графиков через VBA Для более ранних версий?


Сообщение отредактировал excelhelprus - Среда, 09.03.2016, 11:05
 
Ответить
СообщениеНе совсем понял. Не могли бы Вы пример скинуть?
Upd
Понял, Вы так таблицы назвали. Тут совершенно тоже самое, что и с диапазонами.
При первичном присвоении SourceData график просто фиксированный диапазон таблицы берет в качестве данных.
А при изменении ряда данных на столбец таблицы - так же вылетает.

+ ко всему выяснилось, что мой код работает только для 16 версии Excel
В других версиях, почему то начинает ругаться уже там, где цвет для ряда меняется

У кого то есть примеры построения графиков через VBA Для более ранних версий?

Автор - excelhelprus
Дата добавления - 09.03.2016 в 09:48
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Именованные диапазоны в диаграмме через VBA (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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