Как запретить сообщения?

 

Может быть кому-то эта статья покажется лишней, кому-то странной, но...Спрос на данную тему достаточно велик и поэтому статья вообще появилась. Тем, кто программирует на VBA приходится делать разнообразные вещи, среди которых используются вызовы стандартных Excel-вских команд и методов. Команды в свою очередь могут выдавать сообщения, которые совершенно не нужны при выполнении кода. Яркий пример - удаление листа из книги. При попытке удаления листа появляется запрос:

Все бы ничего, но при выполнении кода подобные сообщения "стопорят" код. К примеру ниже приведен код удаления листа:

Запустите его и увидите, что приходится нажимать "Да", чтобы код продолжился. Не совсем удобно, особенно когда надо обойти штук 10 таких сообщений минимум. Проблема устраняется очень просто:

Команда Application.DisplayAlerts = False "подавляет" показ системных сообщений. Это касается практически всех сообщений Excel, даже тех, что появляются перед закрытием книги без сохранения. К чему я это пишу? К тому, что следует помнить, что необходимо всегда возвращать значение данного свойства в True. Иначе может получиться так, что код Вы выполнили, все хорошо. Но значение не вернули. И тогда Вы рискуете вследствие случайного нажатия того же удаления листа, вместо привычного предупрждения просто лишиться листа. А попытавшись закрыть книгу без сохранения, чтобы заново открыть и вернуть лист - не увидеть стандартного вопроса: "Сохранить изменения в книге?"


Статья помогла? Сделай твит, поделись ссылкой с друзьями!
Обсуждение: оставлено 11 коммент.
  1. Мария:

    Спасибо за краткий и понятный ответ!
    Однако даже после установки Application.DisplayAlerts = False при открыти книги продолжает появляться запрос на обновление ее связей

  2. Правильно. Потому как сообщение об обновлении связей относится как раз к тем, которые невозможно подавить отключением данного параметра. Если открываете книгу макросом методом Workbooks.Open, то почитайте все параметры этого метода. Там присутствует такой как UpdateLinks. Если указать False, то обновление происходить не должно.

  3. Ирина:

    Дмитрий, а вот такой вопрос.
    у меня есть файл1 в котором я написала код, который перед закрытием выдает сообщение. Это необходимо, для пользователей которые будут использовать файл1. Но! У меня есть другой файл2, который кодом заполняется на базе файл1. Т.е. он открывает файл1, берет оттуда данные и закрывает. Так вот в коде файла 2 я разместила команду Application.DisplayAlerts = False, но это не помогает. Сообщение все-равно выскакивает при закрытии файла1. Не знаете как это устранить?

  4. Ирина, перед закрытием/открытием файла вставьте строчку:
    Application.EnableEvents = False

    только затем не забудьте вернуть значение этому свойству:
    Application.EnableEvents = True

  5. Ирина:

    Спасибо! помогло.

  6. The_Razer:

    Здравствуйте. Такой вопрос: возможно ли удалить сообщение о защите ячеек от редактирования?

  7. Ильмир:

    The_Razer :
    Здравствуйте. Такой вопрос: возможно ли удалить сообщение о защите ячеек от редактирования?

    Аналогичный вопрос

  8. Вера:

    Добрый день!
    Подскажите, пожалуйска, как в появляющемся системном диалоговом сообщении при помощи макроса нажать на "Yes"?
    Эксель при открытии файла пишет: The file you are truing to open ,..., is in different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?"
    Три варианта ответа: Yes, No, Help
    Нужно, чтобы макрос сам нажимал на "Yes".

    • Вера, на будущее: вопрос к теме не относится. Проигнорировать сообщения и программно нажать кнопку - разные вещи.
      В Вашем случае следует внимательно присмотреться к параметрам Workbooks.Open(). Там есть один - CorruptLoad, который отвечает за открытие книги в таких случаях. Установите его в xlRepairFile или xlExtractData и посмотрите какой результат подойдет больше.

  9. Ants:

    Спасибо большое. Очень помогли.

Поделитесь своим мнением

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


Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Логин
Наши партнеры
Перейти
Перейти
Счетчики
Анализ сайта

Яндекс.Метрика
© 2016 Excel для всех  Войти