Программирование MS Excel
Программирование MS Excel / Советы /
Использование оператора On Error Resume Next


   Когда пользователи закрывают книгу Excel, они ожидают, что все панели инструментов, связанные с этой книгой, будут закрыты вмксте с ней. Добавив оператор On Error Resume Next к коду процедуры, которая удаляет вашипанели инструментов, Вы можете быть уверенны, что книга нормально закроется, даже если пользователь удалил панель, используя интерфейс Excel. Без этого оператора пользователь наблюдал бы ошибку во время закрытия книги. Если ошибка возникает в процедуре, содержащей оператор On Error Resume Next, процедура продолжает выполнение со строки, слелущей непосредственно за ошибочной, причем сообщение об ошибке подавляется.

Общий синтаксис удаления пользовательской панели инструментов следующий:
On Error Resume Next
Application.CommandBars("myCommandBar").Delete
Где myCommandBar - это имя существующей пользовательской панели инструментов. Чтобы посмотреть, как это работает, попробуйте выполнить следующее: Создание и вложение пользовательской панели инструментов
  1. В Excel'е создайте новую книгу.
  2. В меню Сервис (Tools) щелкните Настройка (Customize).
  3. 3. На вкладке Панели инструментов диалогового окна Настройки (Customize) щелкните кнопку Создать.
  4. В диалоговом окне Создание новой панели инструментов напечатайте myCommandBar в поле названия панели инструментов. Щелкните ОК.
  5. На вкладке Панели инструментов щелкните кнопку Вложить.
  6. В диалоговом окне Управление панелями инструментов выберите myCommandBar среди панелей пользователя, затем щелкните Копировать. Ваша новая панель инструментов, myCommandBar, теперь должна появимться в списке панелей книги.
  7. Нажмите ОК и закройте окно Настройки.
  8. Нажмите ALT+F11 чтобы открыть редактор Visual Basic.
  9. В окне просмотра поекта сделайте двойной щелчок на ThisWorkbook под именем отркытой аниги. Откроется модуль класса рабочей книги. Если окно просмотра проекта не отображено на экране, нажмите CTRL+R.
  10. В выпадающем списке объекты щелкните Workbook, затем щелкните BeforeClose в выпадающем списке Процедура.
  11. В окне кода впечатайте или вставтье две строки содержания следующей процедуры:
  12. Private Sub Workbook_BeforeClose(Cancel As Boolean)
        On Error Resume Next
        Application.CommandBars("myCommandBar").Delete
    End Sub
    
  13. В Excel'е щелкните Сохранить как в меню Файл, напишите ToolTest в поле названия.
Закройте ToolTest, myCommandBar панель инструментов должна закрыться вместе с книгой, когда возникнет событие BeforeClose.

Попробуйте удалить панель вручную, а затем закрыть книгу.

Попробуйте удалить оператор On Error Resume Next, а удалить панель вручную, а затем закрыть книгу.

Также оператор On Error Resume Next может быть полезен, если Вы не хотите перехватывать ошибки, но и не хотите получать о них сообщения.


© design & content by Acidigital, 2001

Hosted by uCoz