0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 3
|
||||||
1 | ||||||
Ошибка при закрытии макроса с диаграммой "Object variable or With block variable not set"18.12.2012, 00:17. Показов 2435. Ответов 5
Метки нет Все метки)
(
Здравствуйте. Я только начал изучать VBA поэтому не закидывайте помидорами :black_eye.:
В общем, делал простенький макрос: с помощью кнопок ActiveX смена исходных данных диаграммы и изменения цвета заголовка. При закрытии MS Excel выдаёт ошибку: "run-time error '91': Object variable or With block variable not set." Код выглядит так:
Заранее спс.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
18.12.2012, 00:17 | |
Ответы с готовыми решениями:
5
Ошибка "object variable or With block variable not set" при попытке обращения к форме. VBA Access 7.0. ошибка "Run-time error '91': Object variable or With block variable not set" Работа с БД MS Access и ошибка "object variable or with block variable not set" Вылетает ошибка "Object variable or With block variable not set" |
16 / 16 / 0
Регистрация: 10.09.2012
Сообщений: 113
|
|
18.12.2012, 02:27 | 2 |
Если сначала закрывать книгу - то ошибки не возникнет.
Если же сразу закрывать приложение , то срабатывают обработчики для ComboBox1 и ComboBox2, запускается процедура Диаграмма, но ActiveSheet уже не привязан к листу книги:ActiveSheet= Nothing, что приводит к ошибке. Решить проблему можно, обработав событие закрытия книги на уровне объекта Application (не на уровне Workbook). Создать объект Application, который будет реагировать на события можно через пользовательские классы (что сложновато). Хотя, наверное все можно сделать гораздо проще,например, для данного конкретного случая можно ограничиться перехватом и обработкой ошибки. Управление ошибками в VBA. Операторы On Error, Resume, объект Err
1
|
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 3
|
|
18.12.2012, 02:35 [ТС] | 3 |
Благодарю за развёрнутое пояснение. Не подскажете ли, как сделать перехват обработанной ошибки? Ссылка, которую Вы скинули, информативная и весьма полезная, но на данный момент моя база знаний по VBA недостаточна, чтобы разобраться в этом. Освою это на более позднем этапе обучения.
Попробовал ещё вместо ActiveSheet обратиться к объекту sheets("Лист1"), но на этот раз также сработала ошибка, но другая: Run-time error '1004': Method 'Sheets' of object '_Global' failed
0
|
5467 / 1147 / 50
Регистрация: 15.09.2012
Сообщений: 3,512
|
|
18.12.2012, 08:54 | 4 |
Титёф, вы какое-то свойство задали ComboBoxу, что у него событие срабатывет при закрытии книги. Что это за свойство - я не знаю - нужно время потратить, чтобы изучить все свойства ComboBox.
Удалите ваши ComboBoxы и сделайте их заново. Только задайте одно свойство: ListFillRange, а остальные свойства не трогайте.
1
|
16 / 16 / 0
Регистрация: 10.09.2012
Сообщений: 113
|
|||||||||||
18.12.2012, 10:08 | 5 | ||||||||||
Титёф, если хотите воспользоваться обработкой ошибок, вставьте перед строчкой
А для выяснения, какое свойство меняется (если есть желание), в позновательных целях можно перед строчкой With ActiveSheet.ChartObjects("Диаграмма 1").Chart вставить Debug.Print ComboBox1.Visible, сделать активным Immediate Window в редакторе VBA и, меняя свойства ComboBox, выяснить, что же меняентся перед закрытием.
1
|
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 3
|
|
18.12.2012, 16:28 [ТС] | 6 |
Хммм...это идея. Возможно. Спасибо большое. Попробую.
Благодарю! Буду пробовать.
0
|
18.12.2012, 16:28 | |
Помогаю со студенческими работами здесь
6
"Object variable or With block variable not set " Создание класса и ошибка 'object variable or with block variable not set' Что за ошибка object variable or with block variable not set Ошибка: <Object variable or With block variable not set> Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |