2016-07-20 67 views
1

我有一个单元格C6,它的当前值是公式C5/C4,我想将公式更改为If(C4=0, 0, C5/C4)在VBA中的单元格中替换公式

我有很多类似于这个单元格的单元格,这就是为什么我要开发一个宏,所以我可以循环它们。

但是,下面的代码不起作用。我认为最后一行的问题是Divider=0。因为如果我用C4=0直接替换这部分,代码将起作用。

有人可以告诉我什么是正确的代码?提前致谢!

Sub replaceingError() 

    Dim ws As Worksheet 
    Set ws = ActiveSheet 
    Dim StrTemp As String 
    Dim Divider As String 
    StrTemp = ws.Range("c6").formula 
    MsgBox (StrTemp) 
    Divider = Right(StrTemp, 2) 
    MsgBox (Divider) 
    ws.Range("c6").value = "=IF(Divider=0, 0, strTemp)" 

End Sub 

回答

1

你必须要与变量值的新配方部件的连接:

Sub replaceingError() 

    Dim oWS As Worksheet 
    Dim sTemp As String 
    Dim sDivider As String 
    Dim sFormula As String 

    Set oWS = ActiveSheet 
    sTemp = oWS.Range("C6").Formula 
    sDivider = Right(sTemp, 2) 
    sTemp = Mid(sTemp, 2) 
    sFormula = "=IF(" & sDivider & "=0,0," & sTemp & ")" 
    oWS.Range("C6").Formula = sFormula 

End Sub 
+0

完美。谢谢! – YLS

1

您不能使用.Value设置公式

正确的语法是.Formula

ws.Range("c6").Formula = "=IF(" & Divider & "=0, 0, strTemp)"

+0

它不起作用?我得到的是:#NAME?,单元格值为:= IF(Divider = 0,0,strTemp) – YLS

+0

,因为您的工作簿中没有命名范围“Divider”。 – cyboashu

+0

@cyboashu由于是VBA项目变量,所以'Divider'不应该是工作表中的命名范围。 – omegastripes