Хитрости »
2 Декабрь 2011 57682 просмотров
Как запретить сообщения?
Статья может показаться странной, но…Спрос на данную тему достаточно велик. Тем, кто программирует на 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
ссылки
статистика
A common problem achieving full VBA and Macro automation with Excel is that the warning messages can halt your script in the middle of processing. Learn how to stop that problem and achieve full Excel automation with VBA…
The problem
Excel is pretty smart in that it will inform you when an action is going to change something significant in your workbook. This is usually a great safety feature to prevent you from making mistakes but there are time when you are automating a process and ideally you do not want Excel to keep prompting you during this.
For example, a simple bit of VBA script to delete a worksheet called “Data” from a workbook would be written like below:
1 2 3 |
Sub deletesheet() Sheets("Data").Delete End Sub |
But when you run this VBA script you will get the Excel alert:
And that means you have to stop what you are doing and click on “Delete” for the code to complete, sure this is not a major task but this is a simplified example. Imagine if you have a macro that runs for 20-30minutes and instead of being able to leave alone you have to sit and wait for multiple messages like this.
The Solution
The solution is a piece of code that needs to be included in your visual basic script.
You need to insert the following line at the beginning of your procedure to ensure that right from the get-go Excel does not display any warning messages or alerts:
1 |
Application.DisplayAlerts = False
|
So in our simple example above the VBA script now becomes:
1 2 3 4 5 6 7 |
Sub deletesheet() Application.DisplayAlerts = False Sheets("Data").Delete End Sub |
What does this do?
The parts of the code can be broken down like follows:
- Application: This tells Excel that we are referring to the Excel Application.
- DisplayAlerts: This tells Excel that we are referring to the Display Alerts option within the Excel application.
- = False: This tells Excel that we want to switch alerts off, common practice with VBA is to set something to false. If we set to True it turns them on.
Do you need to switch displayalerts back on?
There is no need to switch the alerts back on at the end of the procedure. A lot of people will do this and in a way it is good practice and keeps the script clean by inserting the line
Application.DisplayAlerts = True
right at the end of your script, but it is not needed. Excel will switch alerts back on once your procedure has completed by default.
Summary
To achieve full Excel automation using VBA you will often find that the use of Application.DisplayAlerts = False is necessary in your VBA script.
Always insert at the beginning of the script if you are trying to achieve full Excel automation with VBA as otherwise you might get some initial alerts that need attention.
There is no need to switch back on at the end of the procedure, Excel does this for you, however it can sometimes be worth adding in-case it confuses less experienced Excel analysts.
Finally make an effort to test your scripts before including this line. You should always test the script first to understand what alerts pop-up and whether or not they are issues that need to be addressed. Only when you are satisfied that the script works as intended should you switch the alerts off.
Now you are one step closer to achieving Excel automation with VBA!
Keep Excelling,
Imagine you’ve written a VBA code that writes in a file, saves and closes it. Now, every time you run your code it shows a popup message in Excel like this (if the file already exists).
You can click OK for one time but if your code does the same for 100s of the time then it is not feasible to do so. You don’t want this to happen. You need to automate this process. To do so, just add these lines to your code.
With Application.DisplayAlerts = False ‘Turns of alerts.AlertBeforeOverwriting = False ‘Turns of overwrite alerts.ScreenUpdating = False ‘Turns of screen updatingEnd With
‘*****************‘Your Code here‘*****************
With Application.DisplayAlerts = True ‘Turns back on alerts
.AlertBeforeOverwriting = True ‘Turns on Overwrite alerts
.ScreenUpdating = True ‘Turns on screen updating
End With
End Sub
Code Explanation
This code not only disables VBA alerts but also increases the time efficiency of the code. Let’s see how.
To use this code, you first need to enable VBA to excel of course.
At the beginning of the code, we disabled all unnecessary operations and in the end, we turned them on so that your system works as it was working before.
With Application: This line gives us access to all properties of the Application object. We can invoke them just by using ‘.’ (dot) operator if called using “With” Block.
.DisplayAlerts = False: This is a property of the application object. See here we have called it using “.” operator just.This line disables all alerts of the closing file, overwriting, or opening an already open file.
.AlertBeforeOverwriting = False: This line disables alert overwriting cells during drag down operation or any other on sheet alert.
.ScreenUpdating = False: in almost every code you move from one cell to another, one sheet to another and one workbook to another. If you don’t add this line, you will see screen flickering. Every movement you do on the system using VBA will be displayed. This causes time overhead and can cause your system to hang. To save time and resources always incorporate this line.
The bottom block must also be executed to turn your excel back to normal and to see results. You are doing nothing but turning every switch on you turned off in the Write this block before each End Sub and Exit Sub.
With Application
.DisplayAlerts = True
.AlertBeforeOverwriting = True
.ScreenUpdating = True
End With
This is one of the most common questions of Excel VBA Programmer Interviews. There is a 90% chance that you will be asked this question in Advanced Excel and VBA questions.
I hope you got your solution. If not, do use the comments section to ask a more personalised question.
Download file
Related Articles:
How to Change The Default Printer Using VBA in Microsoft Excel 2016
How to Display A Message On The Excel VBA Status Bar
How to Insert Pictures Using VBA In Microsoft Excel 2016
How to Add And Save New Workbook Using VBA In Microsoft Excel 2016
How to use the Conditional Formatting using VBA in Microsoft Excel
Popular Articles:
50 Excel Shortcuts to Increase Your Productivity
How to use the VLOOKUP Function in Excel
How to use the COUNTIF function in Excel
How to use the SUMIF Function in Excel
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
Содержание
- Свойство Application.DisplayAlerts (Excel)
- Синтаксис
- Примечания
- Пример
- Поддержка и обратная связь
- Application.DisplayAlerts property (Excel)
- Syntax
- Remarks
- Example
- Support and feedback
- Как запретить сообщения?
- DisplayAlerts Property of Application Object VBA
- VBA Reference
- 120+ Project Management Templates
- VBA DisplayAlerts Application Property – Syntax
- VBA DisplayAlerts Application Property: Example 1
- VBA DisplayAlerts Application Property: Example 2
- VBA DisplayAlerts Application Property – Instructions
- Name already in use
- VBA-Docs / api / Excel.Application.DisplayAlerts.md
Свойство 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 и обратная связь.
Источник
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.
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.
Источник
Как запретить сообщения?
Статья может показаться странной, но. Спрос на данную тему достаточно велик. Тем, кто программирует на 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 , то имеет смысл присмотреться к методам и свойствам объекта(или параметрам метода), который это сообщение провоцирует.
Статья помогла? Поделись ссылкой с друзьями!
Источник
DisplayAlerts Property of Application Object VBA
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:
50+ Excel Templates
50+ PowerPoint Templates
25+ Word Templates
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
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
Here syntax for DisplayAlerts Property of application object in VBA.
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.
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.
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.
Источник
Name already in use
VBA-Docs / api / Excel.Application.DisplayAlerts.md
- Go to file T
- Go to line L
- Copy path
- Copy permalink
Copy raw contents
Copy raw contents
Application.DisplayAlerts property (Excel)
True if Microsoft Excel displays certain alerts and messages while a macro is running. Read/write Boolean.
expression.DisplayAlerts
expression A variable that represents an Application object.
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.
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.
Источник