当我将“= - (”替换为“=”时出错

时间:2014-08-07 20:30:18

标签: string excel vba 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

我只是想编写一个宏来检查前三个字符是否为= - (如果是,则删除它们并使它只是=

这样做将允许此宏在之间来回切换,例如= a1 * b1和= - (a1 * b1)。其他的工作原理是让它从= a1 * b1变为= - (a1 * b1),但是if将它带回到= a1 * b1则让我适合。

1 个答案:

答案 0 :(得分:2)

我最好的猜测是Excel抛出一个错误,因为你分两步处理公式,第一步留下一个尾随的关闭parens。也许如果你在一次操作中替换公式,它就不会有这个问题。下面的示例方法,我还没有测试过它。

    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