А можно ли с помощью макроса скрыть ошибку #ДЕЛ/0!
Ну чтобы эта надпись не отображалась в ячейке, если появилась такая ошибка.
Пример, к сожалению, не взял с собой. Просто мне нужно это сделать без функции =ЕСЛИОШИБКА в каждой ячейке.
Формула в ячейке должна остаться? Или можно удалить формулу?
Если должна остаться, то остаётся только условное форматирование.
А макрос будет делать в пределах возможностей экселя, ничего нового с помощью макроса нельзя сделать.
А почему вам не подходит функция "ЕСЛИОШИБКА"?
Потому что в большом количестве ячеек уникальные ссылки, просто так не скопируешь.
Собственно, не то, что не подходит. 500 раз писать вручную я замучаюсь. Формула должна остаться, да.
С помощью макроса можно так подставить функцию "ЕСЛИОШИБКА".
Макрос работает с выделенными ячейками. Макрос смотрит, есть ли в ячейке формула, прежде чем вставить функцию "ЕСЛИОШИБКА", поэтому можете выделять и шапку таблицы.
Но целые столбцы нельзя выделять, т.к. макрос будет очень долго работать, т.к. на листе 1 млн. строк.
Если будете выделять с помощью клавиши Ctrl, то два раза одни и те же ячейки нельзя выделять.
Для формул массива такая функция не подойдёт.
И предполагается, что нужно вставить функцию "ЕСЛИОШИБКА" в начало формулы. Если надо вставить функцию "ЕСЛИОШИБКА" в середину формулы, то макрос неправильно отработает.
Макрос
Sub макрос()
Dim cell As Range, calc As Long
' Отключение монитора, чтобы ускорить макрос.
Application.ScreenUpdating = False
' Отключение пересчёта формул, чтобы ускорить макрос.
' Перед отключением запоминаем режим формул, чтобы потом его вернуть.
calc = Application.Calculation
Application.Calculation = xlCalculationManual
' Вставка в ячейки, в которых есть формулы, функции "ЕСЛИОШИБКА".
For Each cell In Selection.Cells
If cell.HasFormula Then
cell.Value = "=IFERROR(" & Mid(cell.Formula, 2) & ","""")"
End If
Next cell
' Включение того, что отключили.
Application.ScreenUpdating = True
Application.Calculation = calc
' Сообщение.
MsgBox "Готово.", vbInformation
End Sub
Все получилось!
Большое спасибо!