Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2009, 18:04   #1
maxic
Пользователь
 
Аватар для maxic
 
Регистрация: 10.09.2008
Сообщений: 37
По умолчанию Ряды в диаграмме

Доброго времени суток.
Возникла необходимость сделать макрос на автоматическое приведение диаграммы к определенному виду (изменить типы рядов, их цвета, надписи на диаграмме и т.п.) Сама диаграмма строится на основе сводной таблицы.

Макрос я вроде сделала, но! При возникновении внештатной ситуации, а именно: если один из рядов не содержит данных (соответственно, если нет линии на диаграмме). Мое творение вываливается в ошибку на ActiveChart.SeriesCollection(…).Sel ect.
Пожалуйста, подскажите, как можно избежать таких «ляпов».
Мне пока что не пришло в голову ничего лучше, чем по ячейкам проверить заполнение ряда и потом обрабатывать его график. Но такое решение, во-первых, в моем случае достаточно трудоемкое, во-вторых, не похоже, что правильное...

Очень надеюсь на Ваше внимание и опыт в решении подобных задач
maxic вне форума Ответить с цитированием
Старый 24.05.2009, 18:20   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Вряд ли кто-то Вам сможет помочь без примера файла...
(кстати, поэтому в Вашей предыдущей теме никто так и не ответил)

Выкладывайте файл со своим макросом, и укажите, на какой строке кода вылетает ошибка.
Не забудьте на другом листе для примера создать вручную диаграмму в том виде, в котором Вы желаете её увидеть.
EducatedFool вне форума Ответить с цитированием
Старый 24.05.2009, 19:17   #3
maxic
Пользователь
 
Аватар для maxic
 
Регистрация: 10.09.2008
Сообщений: 37
По умолчанию

Цитата:
Вряд ли кто-то Вам сможет помочь без примера файла...
(кстати, поэтому в Вашей предыдущей теме никто так и не ответил)
Каюсь, грешна.

Цитата:
Выкладывайте файл
Прикрепила файлик для примера.
В представленном Макросе1 ошибка вылетает на второй строке
(ActiveChart.SeriesCollection(4).Se lect)
если выбрать в поле страницы Контрагент1 и запустить макрос 2 раза.
(Почему именно на втором и последующих запусках я не могу понять)

Цитата:
Не забудьте на другом листе для примера создать вручную диаграмму в том виде, в котором Вы желаете её увидеть.
Извините за наглость, но мне важно понять почему так происходит. Если сейчас пойти путем "решите все мои проблемы", то в скором времени Вам придется решать все мои задачи, а мне высылать Вам свою зарплату
Вложения
Тип файла: rar Пример с ошибкой.rar (10.7 Кб, 13 просмотров)
maxic вне форума Ответить с цитированием
Старый 24.05.2009, 23:43   #4
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

А если вовсе отказаться от второй и четвёртой строки это что-то изменит?
pivas вне форума Ответить с цитированием
Старый 25.05.2009, 03:19   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Если отказаться от использования метода Select (а его лучше вообще никогда не использовать, поскольку, чтобы изменить какой-то объект, его вовсе не обязательно выделять), то код начинает работать.

Код:
Sub Макрос1()
    ActiveSheet.ChartObjects(1).Activate
    With ActiveChart
        .SeriesCollection(4).ChartType = xlLine
        .SeriesCollection(3).ChartType = xlLine
        
        With .SeriesCollection(2)
            .Border.Weight = xlThin: .Border.LineStyle = xlAutomatic
            .Shadow = False: .InvertIfNegative = False
            .Interior.ColorIndex = 45: .Interior.Pattern = xlSolid
        End With

        With .SeriesCollection(1)
            .Shadow = False: .InvertIfNegative = False
            .Interior.ColorIndex = 50: .Interior.Pattern = xlSolid
        End With
    End With
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 26.05.2009, 14:44   #6
maxic
Пользователь
 
Аватар для maxic
 
Регистрация: 10.09.2008
Сообщений: 37
По умолчанию

EducatedFool, большое спасибо!
Пойду применять Ваши советы на практике )
maxic вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ряды тейлора STS_1991 Помощь студентам 2 12.05.2009 15:52
pascal ряды world12_tk Помощь студентам 1 03.05.2009 11:48
Диаграмма в диаграмме Jevich Microsoft Office Excel 6 28.01.2009 00:29
Работа по Паскалю, Ряды Тэйлора. Dexterello Помощь студентам 4 28.11.2008 05:53
Задача на ряды Till Паскаль, Turbo Pascal, PascalABC.NET 6 24.06.2008 09:21