Условно Редактировать функцию Excel в VBA - PullRequest
0 голосов
/ 26 марта 2020

Я хочу написать макрос, который проверяет, содержит ли выбранный раздел формулы и если он НЕ содержит формулу ERRORIF (), оборачивает ERRORIF () вокруг существующей формулы.

Все работает нормально, кроме часть "проверьте, существует ли ошибка". Я не знаю, как это реализовать. (Излишне говорить, что я новичок в VBA)

 sep = InputBox("Wähle einen Error-Term für die Wennfehler-Funktion:")

'Determine if a single cell or range is selected
  If Selection.Cells.Count = 1 Then
    Set rng = Selection
    If Not rng.HasFormula Then GoTo NoFormulas
  Else
    'Get Range of Cells that Only Contain Formulas
      On Error GoTo NoFormulas
        Set rng = Selection.SpecialCells(xlCellTypeFormulas)
      On Error GoTo 0
  End If

'Loop Through Each Cell in Range and add =IFERROR([formula],"")
  For Each cell In rng.Cells
    If cell.Formula Like "IFERROR" Then
        cell = cell
    Else
        x = cell.Formula
        cell = "=IFERROR(" & Right(x, Len(x) - 1) & "," & Chr(34) & sep & Chr(34) & ")"
    End If
Next cell

Часть "Like IFERROR" должна реализовывать это, но она не работает, пожалуйста, помогите.

1 Ответ

1 голос
/ 26 марта 2020

Как вы хотите увидеть, если iferror не существует, затем примените его, используйте его как первый параметр в условии if, и вам не нужно проверять другие ячейки, которые начинаются с iferror. У меня есть только одно сомнение; Что если формула ячейки начинается с iferror, но не заканчивается на ", sep)". В этом случае вы можете использовать

If Left (cell.Formula, 8) <> "= IFERROR" AND Right (cell.Formula, len (sep) +4) <> "," & Chr (34) & sep & Chr (34) & ")" Тогда

For Each cell In rng.Cells

If Left(cell.Formula,8) <> "=IFERROR" Then
    x = cell.Formula
    cell.Formula = "=IFERROR(" & Right(x, Len(x) - 1) & "," & Chr(34) & sep & Chr(34) & ")"
End If

Next cell` 
...