displayalerts excel что это

Свойство Application.DisplayAlerts (Excel)

Имеет значение True, если Microsoft Excel отображает определенные оповещения и сообщения во время выполнения макроса. Для чтения и записи, Boolean.

Синтаксис

выражение.DisplayAlerts

выражение: переменная, представляющая объект Application.

Примечания

Значение по умолчанию — True. Установите для этого свойства значение False, чтобы отключить вывод сообщений и оповещений во время выполнения макроса; когда сообщение требует ответа, Microsoft Excel выбирает ответ по умолчанию.

Если для этого свойства задано значение False, при завершении кода для этого свойства в Excel устанавливается значение True, если не выполняется код для нескольких процессов.

При использовании метода SaveAs для книг при перезаписи существующего файла в диалоговом окне подтверждения сохранения используется значение по умолчанию Нет, но если для свойства DisplayAlerts задано значение False, в Excel выбирается ответ Да. Ответ Да перезаписывает существующий файл.

При использовании метода SaveAs для сохранения книги, содержащей проект Visual Basic для приложений (VBA) в формате файлов Excel 5.0/95, в диалоговом окне Microsoft Excel по умолчанию используется значение Да, но если для свойства DisplayAlerts задано значение False, в Excel выбирается ответ Отмена. Книгу, содержащую проект VBA, невозможно сохранить в формате файлов Excel 5.0/95.

Пример

В этом примере показано, как закрыть книгу Book1.xls и не предлагать пользователю сохранить изменения. Изменения файла Book1.xls не сохраняются.

В этом примере показано, как отключить сообщение, которое появляется при инициации канала DDE для приложения, которое не запущено.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Несколько советов по работе с VBA в Excel


Добрый день!

Некоторое время назад меня попросили «помочь с Экселем», а потом и работа подвернулась такая, так что за последние пару месяцев я узнал много полезного, чем и хочу поделиться в догонку к недавней статье.

Предполагается, что вы знаете основы Visual Basic. Я не буду рассказывать, как создавать формы или модули, здесь только примеры кода.

Visual Basic

Опции

Во-первых, в VB массивы могут начинаться с индекса 1, что для многих странно, поэтому в начале модулей можно прописывать:

Так же рекомендуется прописать:

В этом случае интерпретатор потребует заблаговременного объявления всех переменных. Переменные объявлять нужно потому, что:
— VB запомнит их нАпиСание и не будет исправлять во всём коде на последний введенный вариант;
— иногда возникают ошибки с передачей переменных byRef, если они не объявлены (то есть надо или объявить переменную, или приписать в функции/процедуре перед ней byVal).

Ещё одним важным оператором является ON ERROR. Привожу варианты:

Возможности языка

Хотя VB довольно прост, полезно почитать документацию по его синтаксису. Я, например, с удивлением узнал, что можно прописывать сложные усолвия в SELECT’ах (аналог switch):

Ускорение работы макросов

Часто макросы требуют долгого времени выполнения, которое можно значительно сократить. В начале и в конце каждой ресурсоёмкой функции вызвать Prepare и Ended.

По порядку:
1. Отключить перерисовку объектов на экране, чтобы ничего не мигало.
2. Выключить расчет. Внимание, если макрос прерваляс посреди работы, то расчет так и останется в ручном режиме!
3. Не обрабатывать события.
4. Отображение границ страниц, тоже почему-то помогает.
5. В статусной строке выводятся различные данные, что замедляет работу, отключаем.
6. Это если нужно. Выключает сообщения Экселя. Например, мы делаем Workbook.Close, Эксель хочет спросить сохранить ли изменения. При выключении этого параметра все ответы будут даны автоматически (изменения не сохранятся).

Читайте также:  что делает плагин lobbyapi

Важно понимать, что VBA выполняет все действия так же, как и пользователь. Поэтому для того, чтобы установить параметры страницы, он каждый раз открывает и закрывает окно параметров. У меня выставлялись параметры для 10 листов, это реально не быстро. Поэтому делаем так:

Далее, часто нужно просмотреть различные диапазоны ячеек и что-то с ними сделать. Тут важно не использовать циклы for с перебором индексов, они медленные. Можно использовать встроенные функции Экселя, но удобнее всего такой вариант:
Данный код просматривает указанный диапазон, выбирает в нем «специальные ячейки», в данном случае все, в которых есть формулы (т.е. начинаются со знака равно). Для каждой ячейки смотрится, если она не закрашена, то её надо защитить (см. далее) и покрасить. Такой код работает очень быстро.

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

Естественно, что если вам нужны однотипные значения в ячейках, нужно использовать автозаполнение, всё равно как «растягивание» ячеек пользователем.

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

Загрузка книги и события

При открытии книги каждый раз срабатывает процедура.
В данном случае настройки печати (поля, ориентация) сбрасываются на дефолтные. Можно и другую инициализацию выполнять. Важно, что если макросы отключены, то и не выполнится ничего. Если в Экселе вылезла вверху панелька с предупреждением о макросах и пользователь нажал «Включить», то именно в этот момент выполнится процедура Workbook_open().

Список доступных событий можно посмотреть вверху редактора VB. Например, я делал на событие Change проверку, где лежит ячейка, в которой было изменения, и если это нужный диапазон, то делалась запись в лог со старым и новым значением.

Защита

Во-первых сразу отмечу, что MS Office не исполняет макросы на компьютерах, где он не нашел антивируса, если книга зашифрована. Сталкивался на компьютерах, где антивирус был, но видимо Windows XP об этом не знала.

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

Итак, нам надо защитить книгу, чтобы ввод был разрешен только в нужные ячейки (формулы и заголовки поменять нельзя). Во-первых, нужно сделать соответствующие ячейки «не защищенными». Для этого делаем одно из:
— выделяем диапазон, формат ячеек, снять галочку «Блокировать ячейку»;
— выводим кнопку «Блокировать ячейку» в быстрый доступ и нажимаем её, очень удобно смотреть на неё чтобы понять, защищена ячейка или же нет;
— а это пригодится, чтобы проверить третий вариант — написать макрос, который снимает защиту с нужных ячеек сам.

Далее нужно защитить лист. На вкладке Рецензирование есть такая кнопка. Окошко просит ввести пароль и установить исключения (что можно будет делать пользователю). К сожалению, список исключений маловат. Самое обидное, что нельзя разрешить сворачивать/разворачивать группы столбцов/строк. Поэтому действуем так, на загрузку книги прописываем:
Знак подчеркивания продолжает логическую строку на следующей физической строке. Итак, здесь мы:
1. Сняли защиту.
2. Включили группировку.
3. Поставили защиту, при этом:
— защита только от юзера, макросы продолжают иметь полный доступ (!), крайне важно;
— разрешили сортировку, фильтрацию и форматирование строк/столбцов (высота/ширина);
— DrawingObject в данном случае снимает защиту с примечаний к ячейкам, может и ещё с чего.

Читайте также:  проект самозанятые какие регионы 2021

Тут мы сталкиваемся с парой сюрпризов. Во-первых, не все макросы будут работать даже так. Известный баг, ничего не сделаешь. Нельзя вставить строку, например. Приходится снимать и тут же ставить защиту. Если «злоумышленник» в этот момент нажмет ctrl+break, то защита слетит.

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

Решением (костылем) является добавление кнопки или сочетания клавиш для удаления. Заодно можно проверить, чтобы пользователь не удалил чего не надо. В Workbook_open добавляем:

Теперь процедура будет вызываться при нажатии shift+delete.
Знаю, код некрасивый, простите. Здесь я пытался проверить, что выделена строка, то есть строк там 1, а ячеек не меньше тысячи. Чтобы удалить не то, придется выделить тысячу ячеек начиная не с первого столбца. Далее проверяется имя листа и номера строк. Вместо 50 был расчет последенй строки (ведь их число меняется, если мы их удаляем и добавляем).

Заключение

VBA — весьма глючная вещь, которая позволяет сворачивать горы в MS Office. Многие предприятяи используют модели на Excel годами, и если они сделаны хорошо, то всё работает.

Для изучения VBA подходит он сам, во-первых там хорошая справка. Например, чтобы узнать все варианты что можно разрешить в методе Protect, нажимаем F1, Protect, ввод. И вуаля.

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

Источник

Application.DisplayAlerts property (Excel)

True if Microsoft Excel displays certain alerts and messages while a macro is running. Read/write Boolean.

Syntax

expression.DisplayAlerts

expression A variable that represents an Application object.

Remarks

The default value is True. Set this property to False to suppress prompts and alert messages while a macro is running; when a message requires a response, Microsoft Excel chooses the default response.

If you set this property to False, Excel sets this property to True when the code is finished, unless you are running cross-process code.

When using the SaveAs method for workbooks to overwrite an existing file, the Confirm Save As dialog box has a default of No, while the Yes response is selected by Excel when the DisplayAlerts property is set to False. The Yes response overwrites the existing file.

When using the SaveAs method for workbooks to save a workbook that contains a Visual Basic for Applications (VBA) project in the Excel 5.0/95 file format, the Microsoft Excel dialog box has a default of Yes, while the Cancel response is selected by Excel when the DisplayAlerts property is set to False. You cannot save a workbook that contains a VBA project by using the Excel 5.0/95 file format.

Читайте также:  что такое голубая экономика

Example

This example closes the Workbook Book1.xls and does not prompt the user to save changes. Changes to Book1.xls are not saved.

This example suppresses the message that otherwise appears when you initiate a DDE channel to an application that is not running.

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

Объекты MS Excel

Свойства, влияющие на высвечивание на экране

Свойство DisplayAlerts (R/W Boolean)

Свойство ScreenUpdating (R/W Boolean)

Это свойство обновления экрана разрешает (значение True ) или запрещает (значение False ) изменение экрана при выполнении команд MS Excel.

Если процедура выполняет команды MS Excel, то на экране отображаются все действия с объектами MS Excel: выделение и копирование ячеек, перемещение экрана и т.д. Свойство ScreenUpdating позволяет избежать подобного «мелькания экрана».

Свойство Visible (R/W Boolean)

Это свойство позволяет скрывать или показывать окно приложения. Свойство доступно для многих объектов, например, для объектов формы.

Процедура делает видимым окно приложения, если оно не видно или скрывает его, если окно высвечено.

Другие свойства объекта Application

Свойство ActiveWorkbook в отличие от свойства ThisWorkbook позволяет получить доступ к активной рабочей книге

Цикл закрывает с сохранением изменений все открытые рабочие книги за исключением той, в которой находится исполняемая процедура WorksheetFunction Возвращает одноименный объект-контейнер функций рабочего листа MsgBox «Десятичный логарифм 10^6 равен » & WorksheetFunction.Log10(10^6) высвечивает 6

Методы

Метод OnTime

Метод позволяет запустить некоторую процедуру в заданный момент времени.

Синтаксис OnTime(EarliestTime, Procedure[,LatestTime])

Процедура mes_time в 16:30 высвечивает сообщение «Пошли пить кофе».

Метод Wait

Метод переводит приложение в состояние ожидания до наступления некоторого момента времени. Во время паузы пользователь не может выполнять никакие команды, но операции, выполняемые в фоновом режиме, например, распечатка, не прекращаются.

Синтаксис expression. Wait (Time)

Процедура устанавливает паузу примерно на 10 секунд.

Источник

Application.DisplayAlerts property (PowerPoint)

Sets or returns whether Microsoft PowerPoint displays alerts while running a macro. Read/write.

Syntax

expression A variable that represents an Application object.

Return value

Remarks

The value of the DisplayAlerts property is not reset once a macro stops running; it is maintained throughout a session. It is not stored across sessions, so when PowerPoint begins, it is reset to ppAlertsNone.

The value of the DisplayAlerts property can be one of these PpAlertLevel constants.

Constant Description
ppAlertsAll All message boxes and alerts are displayed; errors are returned to the macro.
ppAlertsNone The default. No alerts or message boxes are displayed. If a macro encounters a message box, the default value is chosen and the macro continues.

Example

The following line of code instructs PowerPoint to display all message boxes and alerts, returning errors to the macro.

See also

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

Сказочный портал