Excel vba no alerts

Хитрости »

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).

etg

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.

Sub DisablUpdates()
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

Skip to content

DisplayAlerts Property of Application Object VBA

  • Excel VBA DisplayAlerts Application Property Object

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.

Excel VBA DisplayAlerts Application Property Object

  • 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.

Effortlessly Manage Your Projects and Resources
120+ Professional Project Management 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
Excel VBA Project Management Templates
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:
By PNRaoLast Updated: March 2, 2023

Effectively Manage Your
Projects and  Resources

With Our Professional and Premium Project Management Templates!

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.

Analysistabs Logo

Page load link

Go to Top

Содержание

  1. Свойство Application.DisplayAlerts (Excel)
  2. Синтаксис
  3. Примечания
  4. Пример
  5. Поддержка и обратная связь
  6. Application.DisplayAlerts property (Excel)
  7. Syntax
  8. Remarks
  9. Example
  10. Support and feedback
  11. Как запретить сообщения?
  12. DisplayAlerts Property of Application Object VBA
  13. VBA Reference
  14. 120+ Project Management Templates
  15. VBA DisplayAlerts Application Property – Syntax
  16. VBA DisplayAlerts Application Property: Example 1
  17. VBA DisplayAlerts Application Property: Example 2
  18. VBA DisplayAlerts Application Property – Instructions
  19. Name already in use
  20. 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.

Источник

Like this post? Please share to your friends:
  • Excel vba next do you
  • Excel vba instr пример
  • Excel vba name of named range
  • Excel vba instr без учета регистра
  • Excel vba name list