Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 36

Как сделать чтобы блокировались сообщения об ошибках в Excel?

13.01.2011, 23:32. Показов 6152. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой макрос который бы не показывал (блокировал) сообщения об ошибках типа: #ДЕЛ/0!.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2011, 23:32
Ответы с готовыми решениями:

Подскажите, как настроить QtCreator так, чтобы сообщения об ошибках выводились в правильной кодировке?
Помогите разобраться, почему при компиляции этого проекта высыпается куча ошибок, и подскажите, как настроить QtCreator так, чтобы...

Как создать пароль, чтобы заданные кнопки блокировались
Как создать пороль чтобы выбора пользователей блокировальсь кнопки склад поставщик итд

Как читать сообщения об ошибках???
Подскажите, Как читать сообщения об ошибках, которые выдаются сервером в дебильной кодировке, типа: Microsoft OLE DB Provider for SQL...

20
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
14.01.2011, 08:06
Всё тот же самый макрос :
Visual Basic
1
2
3
4
5
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
On Error GoTo Err
iDate = Target.Value
If IsError(iDate) = True Then Application.Undo
Err: End Sub
0
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
14.01.2011, 08:30
Если на момент ввода данных, которые вызывают сообщение об ошибке, в этой ячейке уже находится значение ошибки, то используйте этот код :
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
On Error GoTo Err
iDate = Target.Value
If IsError(iDate) = True Then
   Application.EnableEvents = False
   '-------------------------------------------------'
   Rem Если нужно оставить старое значение ошибки
   Application.Undo
   Rem Если нужно полностью очистить ячейку от ошибок
   Target.Value = ''
   Rem Необходимо выбрать один из двух вариантов
   '-------------------------------------------------'
   Application.EnableEvents = True
End If
Err: End Sub
0
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 36
14.01.2011, 10:07  [ТС]
Вставляю код в лист где у меня показывае ошибку: #ДЕЛ/0!, перезагружаю книгу но что-то сообщение об ошибке так и осталось.
0
1 / 1 / 0
Регистрация: 03.07.2009
Сообщений: 112
14.01.2011, 11:33
Может быть так
Visual Basic
1
2
3
4
5
6
7
8
9
   On Error GoTo err
   x = 1 / 0
   Stop
err:
   If err.Number <> 11 Then 'если не деление на ноль -сообщать
      MsgBox err.Number
      MsgBox err.Description
   End If
   Resume Next
0
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
14.01.2011, 11:57
Мой макрос работает при введение в ячейку формулы или функции, которая возвращяет результат в виде ошибки. Если Вам нужно, что-то другое, то Вы всегда можете написать мне напрямую.
To gacol
Человек просил написать макрос, который будет определять ВСЕ ошибки, в том числе и деление на 0.
0
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 36
14.01.2011, 13:30  [ТС]
Спасибо pashulka напишу напрямую.
0
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 4
09.10.2011, 12:22
Добрый день, подскажите плиз., где можно найти информацию о создании макроса по замене значения в книге 'ошибки деления на ноль' (#ДЕЛ/0!) на ноль (0).
0
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 4
09.10.2011, 12:39
Сори, интересует тот же вопрос что и пользователя 's707'.
А именно, 'Есть такой макрос который бы не показывал (блокировал) сообщения об ошибках типа: #ДЕЛ/0!'.
Если можно дополнить, чтобы формула сохранялась, но ошибка #ДЕЛ/0! не отображалась.
0
4 / 4 / 2
Регистрация: 06.03.2011
Сообщений: 151
09.10.2011, 12:49
=ЕСЛИ(Делитель <> 0; ФормулаСПотенциальноНулевымДелителем; '')
0
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 4
09.10.2011, 12:59
Дело в том что таких ячеек очень большое количество и ручную исправлять займет много времени, а если макрос существует то будет намного быстрей
0
22 / 5 / 1
Регистрация: 05.09.2010
Сообщений: 370
10.10.2011, 16:03
Попройбуйте так:
Выделить область ячеек где результат формулы #ДЕЛ/0! и выполните макрос:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub ПодправитьФормулы()
  Dim rng As Range, rn As Range
  Set rng = Selection
  On Error GoTo 0
  For Each rn In rng
    If Left(rn.Formula, 1) = "=" Then
      s = rn.Value
      If CStr(s) = "Error 2007" Or CStr(s) = "Error 2042" Then
        f = Right(rn.Formula, Len(rn.Formula) - 1)
        rn.Formula = "=IF(ISERROR(" & f & "),0," & f & ")"
      End If
      Err.Clear
    End If
  Next
End Sub
PS
Работает для #ДЕЛ/0! и #Н/Д
0
0 / 0 / 0
Регистрация: 09.10.2011
Сообщений: 4
10.10.2011, 18:35
Огромное спасибо. Все работает, как в сказке.
0
Сумрак
10.10.2011, 19:11
Что то тут так оживленно, решил тоже ответить :-))
мне в голову такой вариант пришел
Visual Basic
1
2
3
4
5
6
Sub sss()
ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, xlErrors).Select
    For Each mCl In Selection.Cells
        If CStr(mc.Value) = "Error 2007" Then mCl.Formula = "=0"
    Next mCl
End Sub
Это для деления на ноль. Хотел как обработчик ошибок сделать, но чтото не могу из Cells.value обьект Error извлечь чтоб считать его номер. Пришлось грубо... но работает.
Сумрак
10.10.2011, 19:15
Да... еслине трудно, скажите каков результат по скорости обработки... выше приведенного макроса с еще выше приведенным макросом... А то я не тестил его.
22 / 5 / 1
Регистрация: 05.09.2010
Сообщений: 370
11.10.2011, 11:28
Да особой разницы нет, если выровнить шансы.
Я говорю об условии проверки (исключть or) и об одинаковой формуле (=0 или =если(еошибка)...), и одинаковом диапозоне ячеек.

Я думаю формула =если(еошибка) всё-таки предпочтительнее чем =0, поскольку если значения на листе изменятся таким образом, что в результативной ячейке должно уже отразиться что-то, а не #ДЕЛ/0! то в Вашем случае в ней останется 0, а это не есть гут...
0
0 / 0 / 0
Регистрация: 27.04.2009
Сообщений: 265
11.10.2011, 14:12
=Если(ЕОШИБКА(формула)=ЛОЖЬ;формула;"")
0
Сумрак
11.10.2011, 16:32
:-))) я не про шансы...
просто я исключил перебор всех ячеек, оставил только с ошибками в формуле. А про формулу я с Вами согласен. Просто не стал я с формулой заморачиваться. Но не кто же не мешает туда поставить какую угодно... Мне просто интересно на сколько выйгрыш в переборе только ошибочных.
22 / 5 / 1
Регистрация: 05.09.2010
Сообщений: 370
12.10.2011, 07:47
Сумраку
Я сам не ожидал таких результатов, поскольку обход в Вашем случае идет по ячейкам с ошибками.
Так вот, сделал 2 колонки в ячейках которых сплошником #ДЕЛ/0!
выделяю эти колонки запускаю первый макрос (немного откорректированный) получаю результат 1м 30с. Запускаю приведенный Вами 1м 29с. Как бы все сходится...
Затем делаю просветы так, что соотношение ячеек с ошибками к пустым 2 к 4. Выделяю ДВЕ колонки запускаю 1-й макрос, результат 27с, а второго 6м 2с! Выделил ВСЕ ячейки запустил 1-й макрос, результат 6м 2с!
Получилось, что если ячейки с ошибками находятся в шахматном порядке то, SpecialCells(xlCellTypeFormulas, xlErrors) получает ВСЕ ячейки, а если сплошником, то только ячйки с ошибками.
Бред, впрочем, может я что-то нетак делал...
0
Сумрак
13.10.2011, 04:46
Протестил, тоже... результат таков.
1. Вы сделали ошибочный вывод вероятно... т.к. с 1 макросом вы выделяли столбцы для Selection. Во втором макросе. автоматически все с ошибками попали в Selection.
2. Условие на проверку Err Я в обоих сделал одинаковую. Соответственно в результате выйгрышь в скорости второго, пропорцеонален кол-ву ошибок на листе. Этого как бы и следовалдо ожидать. Т.к. ячееки перебераются только со ошибками.
Но если все ячейки Selection c Ошибкой, то почемуто 1 вариант работает чуток быстрее.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.10.2011, 04:46
Помогаю со студенческими работами здесь

Как в русском IE 5.0 читать сообщения об ошибках?
Как в русском IE 5.0 читать сообщения об ошибках, а то пишет всякую чушь. (Если нет выхода, то как переустановить русский IE на английский)

Как пользовательские сообщения об ошибках в тригере передать в VB?
Есть связь VB6 - ADO - SQLServer 7.0 Часть логики сделана на тригерах. Например : есть тригер на удаление, который выдает сообщение о...

Как в Delphi отменить сообщения о критических ошибках
Здравствуйте! Как в Delphi отменить сообщения о критических ошибках, при выполнении уже готовой программы?

Как компилятор передаёт в IDE сообщения об ошибках?
Как компилятор передаёт в IDE сообщения об ошибках/итогах компиляции? Если компилировать без IDE как получить отчёт?

Как сделать так, чтобы в браузере отображались сообщения об ошибке
Кто-нибудь знает как сделать так, чтобы в браузере отображались сообщения об ошибке, а не просто стандартное &quot;Ошибка сервера&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru