获取错误当我replace“= – (”与“=”

我得到一个运行时错误“1004”

应用程序定义或对象定义的错误

当我尝试运行下面的代码

Sub Parenthese_Negative() ' ' Parenthese_Negative Macro ' ' If Left(ActiveCell.Formula, 3) = "=-(" Then ActiveCell.Formula = Replace(ActiveCell.Formula, "=-(", "=") 'ActiveCell.Formula = Right(ActiveCell.Formula, Len(ActiveCell.Formula) - 1) ActiveCell.Formula = Left(ActiveCell.Formula, Len(ActiveCell.Formula) - 1) Else: ActiveCell.Formula = Replace(ActiveCell.Formula, "=", "=-(") & ")" End If Application.Run "mDOM.DMOnEntry" End Sub 

我只是试图写一个macros,检查检查前三个字符是否= – (如果它们是,摆脱它们,使它只是=

这样做会允许此macros在来回之间切换,例如= a1 * b1和= – (a1 * b1)。 其他的工作使它从= a1 * b1到= – (a1 * b1),但是如果把它回到刚才= a1 * b1给我适合。

我最好的猜测是,Excel是抛出一个错误,因为你在两个步骤中处理公式,第一步留下尾部closures的parens。 也许如果你在一个单一的操作中replace公式,它不会有这个问题。 下面的示例方法,我还没有testing过。

  Sub Parenthese_Negative() ' ' Parenthese_Negative Macro ' ' If Left(ActiveCell.Formula, 3) = "=-(" Then ActiveCell.Formula = "=" & Left(Right(ActiveCell.Formula, Len(ActiveCell.Formula) - 3), Len(ActiveCell.Formula) - 4) Else: ActiveCell.Formula = Replace(ActiveCell.Formula, "=", "=-(") & ")" End If Application.Run "mDOM.DMOnEntry" End Sub