Всем доброго дня. Столкнулся с проблемой, решение которой не могу найти. Файл не прилагаю - проблема общего порядка. Как средствами VBA игнорировать предупреждения о возможных ошибках для определенного диапазона ячеек (или, возможно, листа / книги)? Речь идет о том зеленом (по-умолчанию) треугольнике в левом верхнем углу ячейки, где, по мнению системы, возможна ошибка. Эти предупреждения возникают при копировании листа. Раздражают именно визуально. Возникают из-за того, что некоторые формулы в столбцах отличаются от соседних.
Всем доброго дня. Столкнулся с проблемой, решение которой не могу найти. Файл не прилагаю - проблема общего порядка. Как средствами VBA игнорировать предупреждения о возможных ошибках для определенного диапазона ячеек (или, возможно, листа / книги)? Речь идет о том зеленом (по-умолчанию) треугольнике в левом верхнем углу ячейки, где, по мнению системы, возможна ошибка. Эти предупреждения возникают при копировании листа. Раздражают именно визуально. Возникают из-за того, что некоторые формулы в столбцах отличаются от соседних.MacSieM
Вероятно, ход моих мыслей был ошибочен. Правильно ли я понимаю, что когда я игнорирую предупреждение у себя на компьютере, сохраняю этот документ и открываю на другой машине, то предупреждение снова появится? Я исходил из того, что предупреждения не будет, но сейчас в этом не уверен (проверить на другом компьютере не могу). Файл выгружаю (создаю при помощи VBA) на своем компьютере, затем рассылаю новый файл без макросов, но с формулами (на которые система ругается). Поможет ли в моем случае изменение настроек? Они затронут параметры моего Excel, но не книги, которую я рассылаю, верно?
Вероятно, ход моих мыслей был ошибочен. Правильно ли я понимаю, что когда я игнорирую предупреждение у себя на компьютере, сохраняю этот документ и открываю на другой машине, то предупреждение снова появится? Я исходил из того, что предупреждения не будет, но сейчас в этом не уверен (проверить на другом компьютере не могу). Файл выгружаю (создаю при помощи VBA) на своем компьютере, затем рассылаю новый файл без макросов, но с формулами (на которые система ругается). Поможет ли в моем случае изменение настроек? Они затронут параметры моего Excel, но не книги, которую я рассылаю, верно?MacSieM
Я точно не знаю. По логике - это локальные настройки конкретного Экселя на конкретной машине. Но некоторые настройки иногда как зараза переносятся с файлами (например те же окна на панели задач, или стиль R1C1). В общем, проверьте опытным путём. Но думаю что эти треугольники - ерунда по сравнению с упомянутым выше
P.S. Вообще было бы интересно видеть список этих локальных нелокальных опций - никто не встечал?
Я точно не знаю. По логике - это локальные настройки конкретного Экселя на конкретной машине. Но некоторые настройки иногда как зараза переносятся с файлами (например те же окна на панели задач, или стиль R1C1). В общем, проверьте опытным путём. Но думаю что эти треугольники - ерунда по сравнению с упомянутым выше
P.S. Вообще было бы интересно видеть список этих локальных нелокальных опций - никто не встечал?Hugo
Вот и я озадачился. Есть 20 столбцов с формулами. В четных одни, в нечетных другие. И все четные с зеленым уголком. Вот сижу, и хвост чешу - может в четные те же формулы вставить, что и в нечетные? Глядишь, и уголки пропадут.
Вот и я озадачился. Есть 20 столбцов с формулами. В четных одни, в нечетных другие. И все четные с зеленым уголком. Вот сижу, и хвост чешу - может в четные те же формулы вставить, что и в нечетные? Глядишь, и уголки пропадут. RAN
Hugo, Ваш ответ навел на некоторые мысли. В общем, ошибки вроде как можно игнорировать, не выключая в настройках всей проверки. У меня получилось игнорировать ошибку сохраненного как текст числа. А вот с возможными ошибками в формулах никак справиться не могу. VBA не видит у меня в таких ячейках ошибки (хотя в документации заявлено - xlInconsistentFormula).
Простенькая процедура по игнорированию всех ошибок на листе (Update: в процедуру добавлена проверка на все девять типов предупреждений): [vba]
Код
Sub subIgnoreErrors(Optional ws As Worksheet) Dim cell As Range Dim intLoop As Integer Dim strEndCell as String On Error Resume Next If ws Is Nothing Then Set ws = ActiveSheet strEndCell = ws.Range("A1").SpecialCells(xlCellTypeLastCell).Address For Each cell In ws.Range("$A$1:" & strEndCell) For intLoop = 1 To 9 cell.Errors.Item(intLoop).Ignore = True Next Next End Sub
[/vba] RAN, скажите, пожалуйста, получается ли у Вас избавиться от предупреждений? Есть ли у кого мысли по дальнейшему решению проблемы?
Hugo, Ваш ответ навел на некоторые мысли. В общем, ошибки вроде как можно игнорировать, не выключая в настройках всей проверки. У меня получилось игнорировать ошибку сохраненного как текст числа. А вот с возможными ошибками в формулах никак справиться не могу. VBA не видит у меня в таких ячейках ошибки (хотя в документации заявлено - xlInconsistentFormula).
Простенькая процедура по игнорированию всех ошибок на листе (Update: в процедуру добавлена проверка на все девять типов предупреждений): [vba]
Код
Sub subIgnoreErrors(Optional ws As Worksheet) Dim cell As Range Dim intLoop As Integer Dim strEndCell as String On Error Resume Next If ws Is Nothing Then Set ws = ActiveSheet strEndCell = ws.Range("A1").SpecialCells(xlCellTypeLastCell).Address For Each cell In ws.Range("$A$1:" & strEndCell) For intLoop = 1 To 9 cell.Errors.Item(intLoop).Ignore = True Next Next End Sub
[/vba] RAN, скажите, пожалуйста, получается ли у Вас избавиться от предупреждений? Есть ли у кого мысли по дальнейшему решению проблемы?MacSieM
Сообщение отредактировал MacSieM - Четверг, 21.11.2013, 13:44
Погодите - ошибки в формулах и отличие формул в диапазоне это разные вещи! Это отличие у меня например всегда отключено, т.е. совершенно не напрягает. Ну а ошибок в формулах быть не должно - правьте макрос. Если формула работает, но выводит например Н/Д - это третий вариант, это можно например скрыть условным форматированием, или изменить формулу чтоб в таком случае выводило что задумано.
Погодите - ошибки в формулах и отличие формул в диапазоне это разные вещи! Это отличие у меня например всегда отключено, т.е. совершенно не напрягает. Ну а ошибок в формулах быть не должно - правьте макрос. Если формула работает, но выводит например Н/Д - это третий вариант, это можно например скрыть условным форматированием, или изменить формулу чтоб в таком случае выводило что задумано.Hugo
Hugo, боюсь, я неправильно выразился. Лучше приложу все же файл. Предполагаю, что в русской локализации нужно будет месяц заменить на "Февраль", например. На нем завязана часть функций. Лист "Februar_2013" - типичный представитель того, что я отправляю. Каждый новый месяц создается копия листа "Muster" (где все формулы прописаны), лишь в определенные ячейки (столбцы G:K) вставляются фиксированные значения (этим занимается другой файл с макросом). Формулы без ошибок. Я не стал их усложнять лишними условиями (если строка такая-то, то действие такое-то, например). Это что касается столбца А. В столбцах M и N по факту вообще одна и та же формула, но Excel ее несколько по-разному записывает для первых двух строк. Поэтому в самих формулах ошибок нет. Я понимаю, что все это можно обойти либо правкой формул, либо избавлением от формул в принципе, но мне бы в любом случае хотелось бы научиться игнорировать предупреждения о возможных ошибках.
Hugo, боюсь, я неправильно выразился. Лучше приложу все же файл. Предполагаю, что в русской локализации нужно будет месяц заменить на "Февраль", например. На нем завязана часть функций. Лист "Februar_2013" - типичный представитель того, что я отправляю. Каждый новый месяц создается копия листа "Muster" (где все формулы прописаны), лишь в определенные ячейки (столбцы G:K) вставляются фиксированные значения (этим занимается другой файл с макросом). Формулы без ошибок. Я не стал их усложнять лишними условиями (если строка такая-то, то действие такое-то, например). Это что касается столбца А. В столбцах M и N по факту вообще одна и та же формула, но Excel ее несколько по-разному записывает для первых двух строк. Поэтому в самих формулах ошибок нет. Я понимаю, что все это можно обойти либо правкой формул, либо избавлением от формул в принципе, но мне бы в любом случае хотелось бы научиться игнорировать предупреждения о возможных ошибках.MacSieM
И да, вопрос вдогонку. У меня на листе "Muster" сейчас нет ни одного предупреждения об ошибках (я их вручную игнорировал). На листе "Februar_2013" предупреждения есть - этот лист я создавал на основе листа "Muster". У вас точно так же? Сохраняются ли игнорирования ошибок вместе с книгой?
И да, вопрос вдогонку. У меня на листе "Muster" сейчас нет ни одного предупреждения об ошибках (я их вручную игнорировал). На листе "Februar_2013" предупреждения есть - этот лист я создавал на основе листа "Muster". У вас точно так же? Сохраняются ли игнорирования ошибок вместе с книгой?MacSieM
Сообщение отредактировал MacSieM - Четверг, 21.11.2013, 13:16
Со своим вопросом разобрался опытным путем. Оказывается, типов предупреждений существует не 7, как сказано в справке, ссылку на которую я привел выше, а 9. Мои предупреждения как раз девятого (название не знаю), а не четвертого (xlInconsistentFormula) типа.
Со своим вопросом разобрался опытным путем. Оказывается, типов предупреждений существует не 7, как сказано в справке, ссылку на которую я привел выше, а 9. Мои предупреждения как раз девятого (название не знаю), а не четвертого (xlInconsistentFormula) типа.MacSieM
Если запускать макрос из сообщения 9 с листа, где предупреждения, то они будут проигнорированы, как и требуется. Если запускать процедуру по устранению предупреждений из другой книги, открыв ту, что с предупреждениями, через макрос, то ничего не изменится.
Если запускать макрос из сообщения 9 с листа, где предупреждения, то они будут проигнорированы, как и требуется. Если запускать процедуру по устранению предупреждений из другой книги, открыв ту, что с предупреждениями, через макрос, то ничего не изменится.