When you’re editing a Microsoft Office VBA macro or function, you will often move your cursor from a line that you haven’t finished. For example, to go copy something you want to paste into that line. But, if that partial line isn’t syntactically valid, the VBA editor interrupts your work by popping up a «Compile error» message that has to be dismissed.
Is there any way to disable the message box? I find it irritating…
(This happens with Excel Visual Basic for Applications, Outlook VBA, Word VBA, etc.)
asked Jul 19, 2012 at 12:29
1
Do the following in your VBA editor window (entitled «Microsoft Visual Basic for Applications»):
Click the menu «Tools» and then «Options«.
In the Options’ «Editor» tab, uncheck the «Auto Syntax Check» box. (See screenshot, below.)
This change does not make the editor stop compiling in the background and marking syntax errors in red (or whatever formatting is specified in the Options tab «Editor Format»).
MS Office programs share this common VBA editor, so if you change an option while editing VBA for Excel then you’ve changed it for Outlook, Word, etc.
answered Jul 19, 2012 at 13:29
rayray
8,4817 gold badges44 silver badges58 bronze badges
8
In the VBE, Tools — Options — Editor and uncheck Auto Syntax Check. It will turn bad code red, but won’t give you the popup.
answered Jul 19, 2012 at 13:30
Dick KusleikaDick Kusleika
32.5k4 gold badges51 silver badges73 bronze badges
February 13, 2014/
Chris Newman
Writing VBA Code Can’t Be This Annoying, Can It?
When I first started coding in the Visual Basic Editor (VBE) I would always get so annoyed with the message box alerts that would pop up every time I didn’t use proper code syntax. This caused me to get distracted since every time I didn’t type something in properly I would get an error alert and have to click the OK button (usually occurred every other minute).
Being new to using the Visual Basic Editor, I thought this was just normal and I had to live with the annoying pop-ups. After I got more comfortable with the editor I started playing around with the options and stumbled upon a setting that I am so thankful exists! This setting allowed me to turn off the annoying syntax error message alerts and I have not seen one since!
Steps To Get Rid Of The Syntax Error Alerts
Step 1: In the Visual Basic Editor (shortcut: Alt + F11) open the Tools menu and select Options…
Step 2: In the Options dialog box, ensure the Auto Syntax Check checkbox is NOT checked in the Code Settings section. This turns off the error messages while still coloring incorrect syntax code with red font.
Hit the OK button and you should be error message free from now on! Woohoo!!
My Question To You!
So I’m curious, was I just naive or did it take you a long time to figure out how to rid your life of VBA Error Alerts? Leave a comment below and let me know how long it took you!
About The Author
Hey there! I’m Chris and I run TheSpreadsheetGuru website in my spare time. By day, I’m actually a finance professional who relies on Microsoft Excel quite heavily in the corporate world. I love taking the things I learn in the “real world” and sharing them with everyone here on this site so that you too can become a spreadsheet guru at your company.
Through my years in the corporate world, I’ve been able to pick up on opportunities to make working with Excel better and have built a variety of Excel add-ins, from inserting tickmark symbols to automating copy/pasting from Excel to PowerPoint. If you’d like to keep up to date with the latest Excel news and directly get emailed the most meaningful Excel tips I’ve learned over the years, you can sign up for my free newsletters. I hope I was able to provide you with some value today and I hope to see you back here soon!
— Chris
maseur Пользователь Сообщений: 282 |
Доброй ночи, форумчане. Такая вот проблемма. Rows(«1:1»).Delete В том случае, если нет ни одной такой строки (пустой лист) появляется сообщение об ошибке (rine time errore 91). |
EducatedFool Пользователь Сообщений: 3653 |
#2 21.01.2013 03:30:45 Первой строкой в макросе:
PS: Эта директива — наиболее часто встречающаяся строка в моих программах. Изменено: EducatedFool — 21.01.2013 03:31:23 |
||
Johny Пользователь Сообщений: 2737 |
#3 21.01.2013 08:38:12 Если Вы знаете предполагаемое место, где может быть ошибка, то после этого места необходимо вставить вот эту строку:
Если не поставить эту строчку, то макрос будет работать в режиме «Ошибка», и если далее в коде опять возникнет ошибка, то VBA не будет на неё реагировать. Другими словами, «On Error GoTo 0» возвращает VBA в нормальный режим. There is no knowledge that is not power |
||
maseur Пользователь Сообщений: 282 |
Спасибо за советы. |
Johny Пользователь Сообщений: 2737 |
#5 23.01.2013 09:24:50
Код от EducatedFool — единственный в данной теме, поэтому непонятно, из чего Вы выбирали.
А это тут причём? Я лишь предупредил о подводных камнях. There is no knowledge that is not power |
||||
iba2004 Пользователь Сообщений: 1034 |
#6 23.01.2013 09:29:30 off: Кому проще??? Excel’ю??? :о)) |
Хитрости »
2 Декабрь 2011 57152 просмотров
Как запретить сообщения?
Статья может показаться странной, но…Спрос на данную тему достаточно велик. Тем, кто программирует на 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) синтаксические ошибки, (b) ошибки времени выполнения и (c) логические ошибки.
Синтаксические ошибки
Синтаксические ошибки, также называемые ошибками синтаксического анализа, возникают во время интерпретации VBScript. Например, следующая строка вызывает синтаксическую ошибку, поскольку в ней отсутствует закрывающая скобка.
Function ErrorHanlding_Demo() dim x,y x = "Tutorialspoint" y = Ucase(x End Function
Ошибки во время выполнения
Ошибки времени выполнения, также называемые исключениями, возникают во время выполнения после интерпретации.
Например, следующая строка вызывает ошибку во время выполнения, потому что здесь синтаксис правильный, но во время выполнения он пытается вызвать fnmultiply, который является несуществующей функцией.
Function ErrorHanlding_Demo1() Dim x,y x = 10 y = 20 z = fnadd(x,y) a = fnmultiply(x,y) End Function Function fnadd(x,y) fnadd = x + y End Function
Логические ошибки
Логические ошибки могут быть наиболее сложным типом ошибок для отслеживания. Эти ошибки не являются результатом синтаксиса или ошибки времени выполнения. Вместо этого они возникают, когда вы совершаете ошибку в логике, управляющей вашим сценарием, и вы не получаете ожидаемого результата.
Вы не можете поймать эти ошибки, потому что это зависит от требований вашего бизнеса, какую логику вы хотите использовать в своей программе.
Например, деление числа на ноль или написанного скрипта, который входит в бесконечный цикл.
Err Object
Предположим, если у нас есть ошибка во время выполнения, то выполнение останавливается, отображая сообщение об ошибке. Как разработчик, если мы хотим зафиксировать ошибку, то используется Error Object.
пример
В следующем примере Err.Number дает номер ошибки, а Err.Description – описание ошибки.
Err.Raise 6 ' Raise an overflow error. MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description Err.Clear ' Clear the error.
Обработка ошибок
VBA включает подпрограмму обработки ошибок, а также может использоваться для отключения подпрограммы обработки ошибок. Без оператора On Error любая ошибка во время выполнения является фатальной: отображается сообщение об ошибке, и выполнение резко останавливается.
On Error { GoTo [ line | 0 | -1 ] | Resume Next }
Линия GoTo
Включает процедуру обработки ошибок, которая начинается со строки, указанной в требуемом аргументе строки. Указанная строка должна быть в той же процедуре, что и оператор On Error, иначе произойдет ошибка времени компиляции.
Перейти 0
Отключает включенный обработчик ошибок в текущей процедуре и сбрасывает его в Nothing.
GoTo -1
Отключает включенное исключение в текущей процедуре и сбрасывает его в Nothing.
Продолжить дальше
Указывает, что при возникновении ошибки во время выполнения элемент управления переходит к оператору, который следует сразу за оператором, в котором произошла ошибка, и выполнение продолжается с этой точки.
-
#1
Hi,
I’m pretty certain there is a way to disable any error messages using VB coding and I was wondering if someone could point me in the right direction.
I believe it is done using the ‘Application.‘ function but am not 100% sure
Excel Facts
Why are there 1,048,576 rows in Excel?
The Excel team increased the size of the grid in 2007. There are 2^20 rows and 2^14 columns for a total of 17 billion cells.
Mike Blackman
Well-known Member
- Joined
- Jun 8, 2007
- Messages
- 2,494
VoG
Legend
- Joined
- Jun 19, 2002
- Messages
- 63,650
-
#3
Or perhaps
Code:
Application.DisplayAlerts = False
-
#4
That’s the one, thanks guys
slmandle
New Member
- Joined
- Dec 9, 2015
- Messages
- 1
-
#5
any ideas how to stop this happening from vbscript ?
the above entries don’t stop fatal errors from showing
Mike Blackman
Well-known Member
- Joined
- Jun 8, 2007
- Messages
- 2,494
-
#6
any ideas how to stop this happening from vbscript ?
the above entries don’t stop fatal errors from showing
What are trying to do with vbs? I don’t believe vbs has error handling to the same level vba has so the solution would be different, can you give a little bit of detail for your problem?
Similar threads