title | keywords | f1_keywords | ms.prod | api_name | ms.assetid | ms.date | ms.localizationpriority |
---|---|---|---|---|---|---|---|
Application.DisplayAlerts property (Excel) |
vbaxl10.chm133119 |
vbaxl10.chm133119 |
excel |
Excel.Application.DisplayAlerts |
d9f36a99-e9c9-9a67-abaf-9c8e49b4febc |
04/04/2019 |
high |
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.
[!NOTE]
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.
Application.DisplayAlerts = False Workbooks("BOOK1.XLS").Close Application.DisplayAlerts = True
This example suppresses the message that otherwise appears when you initiate a DDE channel to an application that is not running.
Application.DisplayAlerts = False channelNumber = Application.DDEInitiate( _ app:="WinWord", _ topic:="C:WINWORDFORMLETR.DOC") Application.DisplayAlerts = True Application.DDEExecute channelNumber, "[FILEPRINT]" Application.DDETerminate channelNumber Application.DisplayAlerts = True
[!includeSupport and feedback]
Хитрости »
2 Декабрь 2011 57676 просмотров
Как запретить сообщения?
Статья может показаться странной, но…Спрос на данную тему достаточно велик. Тем, кто программирует на VBA приходится делать разнообразные вещи, для выполнения которых используются вызовы стандартных Excel-вских команд и методов. Команды в свою очередь могут выдавать сообщения, которые совершенно не нужны при выполнении кода. Яркий пример — удаление листа из книги. При попытке удаления листа появляется запрос:
Такое предупреждение не может быть лишним с точки зрения ручного удаления листа — вдруг кнопка Удалить была нажата по ошибке. Но при выполнении кода подобные сообщения «стопорят» код и могут стать очень ощутимой помехой автоматизации процессов. К примеру ниже приведен код удаления листа:
Sub Del_Sheet() ActiveSheet.Delete MsgBox "Лист удален(или нет, смотря что Вы нажали)", vbInformation, "www.excel-vba.ru" End Sub
Запустите его и увидите, что приходится нажимать «Да» в стандартном окне Excel, чтобы код продолжился и показал уже наше сообщение. Т.е. сначала пользователь увидит стандартное окно предупреждения Excel и пока не сделает выбор код дальше не пойдет и не покажет наше сообщение. Не совсем удобно, особенно когда надо обойти штук 10 таких сообщений(часто это бывает при работе в циклах). К тому же, если пользователь откажется от удаления — лист так и не будет удален. А это уже может быть очень критично для выполнения кода в дальнейшем.
Проблема устраняется очень просто:
Sub Del_Sheet() Application.DisplayAlerts = False ActiveSheet.Delete MsgBox "Лист удален", vbInformation, "www.excel-vba.ru" Application.DisplayAlerts = True End Sub
Команда Application.DisplayAlerts = False «подавляет» показ системных сообщений. Это касается практически всех сообщений Excel, даже тех, что появляются перед закрытием книги без сохранения. К чему я это специально уточняю? К тому, что следует помнить, что необходимо всегда возвращать значение данного свойства в True. Иначе может получиться так, что код Вы выполнили, никаких лишних сообщений не получили. Но значение не вернули. И тогда Вы рискуете вследствие случайного нажатия того же удаления листа, вместо привычного предупреждения просто лишиться листа со всеми данными. А попытавшись закрыть книгу без сохранения, чтобы заново открыть и вернуть лист — не увидеть стандартного вопроса: «Сохранить изменения в книге?» — книга будет закрыта и возможно даже сохранена автоматически.
Поэтому отключение показа сообщений сводится к простому алгоритму:
'отключаем показ сообщений Application.DisplayAlerts = False 'производим действия, в результате которых может появится назойливое и ненужное сообщение 'какой-то код 'обязательно возвращаем показ сообщений Application.DisplayAlerts = True
Но следует так же учитывать, что некоторые сообщения невозможно отменить даже этим методом. Например, при открытии кодом книги с нарушенными связями Excel запросит их обновление и указание источника, если это задано в свойствах книги. Чтобы избежать сообщений об изменении связей при открытии книг кодом можно использовать свойство книги UpdateLinks:
Workbooks.Open FileName:="C:Documentsкнига1.xlsx", UpdateLinks:=False
Поэтому если вдруг Вам посчастливилось нарваться на сообщение, которое не отменяется командой Application.DisplayAlerts = False, то имеет смысл присмотреться к методам и свойствам объекта(или параметрам метода), который это сообщение провоцирует.
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
KoNooS104 0 / 0 / 0 Регистрация: 20.12.2012 Сообщений: 3 |
||||
1 |
||||
26.12.2012, 18:12. Показов 24979. Ответов 3 Метки нет (Все метки)
Здравствуйте. Вообщем, у меня на кнопке удаления страницы графика с екселя записана команда:
Объясните пожалуйста как она работает? Как связана с графиком?
0 |
4377 / 661 / 36 Регистрация: 17.01.2010 Сообщений: 2,134 |
|
26.12.2012, 18:24 |
2 |
Я наверное на дежурстве… Команда «запрещает» системе задавать лишние вопросы. Вы удаляете, например, лист как обычно, и тогда система Вас спрашивает: «А не сохранить ли нам изменения». А Вы ей:»Да нет, спасибо, не утруждайтесь». И книга(лист, обьект…) удаляется (закрывается) без сохранения последних изменений. Это когда Application.DisplayAlerts=False. А когда True, тогда у Вас в голове преобладает только одна мысль: «Достала ты меня уже, подруга.»
2 |
0 / 0 / 0 Регистрация: 20.12.2012 Сообщений: 3 |
|
26.12.2012, 18:52 [ТС] |
3 |
Ты пьян?) ахах спасибо за такой подробный ответ, разобрался. Можно было просто написать: Спрашивает разрешение. )
0 |
4377 / 661 / 36 Регистрация: 17.01.2010 Сообщений: 2,134 |
|
26.12.2012, 19:02 |
4 |
Да не спрашивает. Это Вы ей разрешаете, или нет. False -запрещаете , Тrue -разрешаете задавать вопросы. А чего Вы такой сухарь?
2 |
Чем больше познаём мы макросы, тем интересней выгледят наши программы. А бывает, что их выполнение происходит очень долго, при сложных и долгих математических расчётах или составлении каких-то отчётов и табилц. В ходе выполнения макроса на мониторе происходит мелькание различных окон, открытие и закрытие книг, и прочая светомузыка. Для того чтобы этого не происходило, и чтобы время выполнение нашего макроса сократить раз в 100, можно воспользоваться командами описанные ниже.
Application.ScreenUpdating
Application.ScreenUpdating — отвечает за обновление экрана и может принимать два значения — False (обновление экрана отключено) и True (обновление экрана включено). В коде это обычно прописывается в том месете, где происходит мелькание различных окон или видно как производится расчёт и происходит заполнение таблицы. Ниже показан пример заполнения ячеек, и данную команду вставили в начало и конец макроса, т.е. сначала отключаем обновление экрана, а потом включаем обновление экрана. При такой записи мы не увидим процесс заполнения ячеек. А вот если убрать эти команды, то мы сможем наблюдать за процессом заполнения этих ячеек.
Sub Primer()
Application.ScreenUpdating = False
For a = 1 To 100
For b = 1 To 100
Cells(a, b) = «Пример»
Next b
Next a
Application.ScreenUpdating = True
End Sub
Application.Calculation
Application.Calculation — отвечает за автоматический расчёт в книге Excel и может принимать два значения — xlCalculationManual(ручной расчёт) и xlCalculationAutomatic (автоматический расчёт — по умолчанию установлен в Excel). Но тут есть одна осторожность, если вы перевели Excel в ручной расчёт, и в макросе произошла ошибка и он так и не выполнился до конца — т.е. не включился автоматический расчёт формул, то все ваши вычисления в дальнейшем будут в пустую. Так как формулы не будут автоматически пересчитываться, Excel превратиться в обычную таблицу. Но данная команда играет одну из основных ролей в быстроте выполнеия макроса. Вообщем лучше сделать код, который исключает ошибки, чтобы макрос полюбому выполнился и Excel перевёлся в автоматический расчёт. Если у Вас имеется большая таблица с многочисленными формулами, и часть вычислений вы производите при помощи макросов, то для быстроты выполнения расчётов разумно в начало и конец кода поместить команду Application.Calculation.
Sub Primer2()
Application.Calculation = xlCalculationManual
……………….
……………….
……………….
Application.Calculation = xlCalculationAutomatic
End Sub
Application.EnableEvents
Application.EnableEvents — команда отвечающая за выполнение сторонних событий. Эту команду мы уже затрагивали в этом уроке. И она также может принимать два значения — это False (отключить собтие) и True (включить выполнение промежуточных событий). Но теперь ещё известно, что она играет значительную роль в скорости выполнения некоторых кодов макроса. Пример можно взять из Урока №23.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Target.Cells = «Привет»
Application.EnableEvents = True
End Sub
ActiveSheet.DisplayPageBreaks
ActiveSheet.DisplayPageBreaks — отображение границ листа. Может принимать два значения — False (отключить отображение границ) и True (включить отображение границ). Не знаю как это помогает на скорости выполнения макроса, лично я этого не ущутил, но некоторые говорят, что помогает. Я вообще не люблю когда отображаются границы листа, мне кажется, что это нужно только при распечатке. Помещать этот код можно в начало и конец макроса.
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.DisplayPageBreaks = False
…………………….
…………………….
…………………….
ActiveSheet.DisplayPageBreaks = True
End Sub
Application.DisplayStatusBar
Application.DisplayStatusBar — строка состояния. Может принимать два значения — False (отключить строку состояния) и True (включить строку состояния). При выполнении макросов в строке состояния отображаются все происходяще события. Для того чтобы не тратить время на просчёт событий и прорисовку их в статусбаре, отключаем её на время выполнения макроса, и включаем её когда макрос закончил выполняться.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.DisplayStatusBar = False
…………………….
…………………….
…………………….
Application.DisplayStatusBar = True
End Sub
Application.DisplayAlerts
Application.DisplayAlerts — команда, отвечающая за события в Excel. Может принимать два значения — False (отключаем запросы Excel) и True (включаем события Excel). Это чень интересная и полезная команда при помощи, которой можно отключить запросы Excel, например, чтобы он не спрашивал нужно ли сохранить изменения в книге, или отключить запрос на совместимость версий Excel. Ниже приведён пример, в котором книга закрывает сама себя, при этом независимо от того внесли вы изменения или нет в книгу, при закрытии книги вам не поступит запрос «Сохранить изменения», а книга просто закроется без сохранения и уведомления пользователя.
Sub Primer()
Application.DisplayAlerts = False
ThisWorkbook.Close
Application.DisplayAlerts = True
End Sub
Глобальное ускорение
Из всего выше сказанного можно сделать вывод, что для ускорения работы макроса можно воспользоваться нужными нам командами, теми которые подходят в нашем случае. Бывает, что код очень сложный и включает в себе различные математические и другие операции и использовать можно несколько команд сразу как показано на этом примере:
sub Primer()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Application.DisplayStatusBar = False
Application.DisplayAlerts = False
…………………….
…………………….
…………………….
…………………….
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.DisplayStatusBar = True
Application.DisplayAlerts = True
End Sub
DisplayAlerts Property of Application Object VBA
DisplayAlerts Application Property in VBA has Boolean value either True or False. Default value is True. When the value is True it displays alerts and messages while running a macro. If the value is False it doesn’t display any messages or alerts. Please find the more information and syntax in the following chapter.
- VBA DisplayAlerts Application Property – Syntax
- VBA DisplayAlerts Application Property: Example 1
- VBA DisplayAlerts Application Property: Example 2
- VBA DisplayAlerts Application Property- Instructions
VBA DisplayAlerts Application Property – Syntax
Here syntax for DisplayAlerts Property of application object in VBA.
Application. DisplayAlerts
Where DisplayAlerts as String.
In the above syntax Application represents object and DisplayAlerts is the Property of Application object.
VBA DisplayAlerts Application Property: Example 1
Please find the below example for DisplayAlerts Property of application object in excel VBA. The below example doesn’t display any alert while closing active workbook.
Sub Appl_Display_Alert_Ex2() 'DisplayAlerts is the property of application object Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True End Sub
VBA DisplayAlerts Application Property: Example 2
Please find the below example for DisplayAlerts Property of application object in excel VBA. The below example displays alerts while closing active Workbook.
Sub Appl_Display_Alert_Ex2() 'DisplayAlerts is the property of application object Application.DisplayAlerts = True ‘Optional Statement ActiveWorkbook.Close End Sub
VBA DisplayAlerts Application Property – Instructions
Please follow the below steps to execute the VBA code to save the excel file.
Step 1: Open any existing Excel Application.
Step 2: Press Alt+F11 – This will open the VBA editor window.
Step 3: Insert a code module from then insert menu.
Step 4: Copy the above code and paste in the code module which have inserted in the above step.
Step 5: Now press F5 to execute the code.
A Powerful & Multi-purpose Templates for project management. Now seamlessly manage your projects, tasks, meetings, presentations, teams, customers, stakeholders and time. This page describes all the amazing new features and options that come with our premium templates.
Save Up to 85% LIMITED TIME OFFER
All-in-One Pack
120+ Project Management Templates
Essential Pack
50+ Project Management Templates
Excel Pack
50+ Excel PM Templates
PowerPoint Pack
50+ Excel PM Templates
MS Word Pack
25+ Word PM Templates
Ultimate Project Management Template
Ultimate Resource Management Template
Project Portfolio Management Templates
-
-
- In this topic:
-
- VBA DisplayAlerts Application Property – Syntax
- VBA DisplayAlerts Application Property: Example 1
- VBA DisplayAlerts Application Property: Example 2
- VBA DisplayAlerts Application Property – Instructions
VBA Reference
Effortlessly
Manage Your Projects
120+ Project Management Templates
Seamlessly manage your projects with our powerful & multi-purpose templates for project management.
120+ PM Templates Includes:
Effectively Manage Your
Projects and Resources
ANALYSISTABS.COM provides free and premium project management tools, templates and dashboards for effectively managing the projects and analyzing the data.
We’re a crew of professionals expertise in Excel VBA, Business Analysis, Project Management. We’re Sharing our map to Project success with innovative tools, templates, tutorials and tips.
Project Management
Excel VBA
Download Free Excel 2007, 2010, 2013 Add-in for Creating Innovative Dashboards, Tools for Data Mining, Analysis, Visualization. Learn VBA for MS Excel, Word, PowerPoint, Access, Outlook to develop applications for retail, insurance, banking, finance, telecom, healthcare domains.
Page load link
Go to Top