2016-07-20 29 views
1

Ich habe eine Zelle von C6, es ist der aktuelle Wert ist die Formel C5/C4, ich möchte die Formel auf If(C4=0, 0, C5/C4) ändern.Ersetzen Formel in einer Zelle in VBA

Ich habe viele Zellen, die dieser Zelle ähnlich sind, deshalb möchte ich ein Makro entwickeln, damit ich sie durchlaufen kann.

Der folgende Code funktioniert jedoch nicht. Ich denke, das Problem ist Divider=0 in der letzten Zeile. Denn wenn ich diesen Teil direkt durch C4=0 ersetze, wird der Code funktionieren.

kann mir jemand raten, was wäre der richtige Code? Danke im Voraus!

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 

Antwort

1

Sie haben eine Verkettung der neuen Formel Teile mit Variablen Wert zu machen:

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

Perfekt. Vielen Dank! – YLS

1

Sie können nicht .Value verwenden Formel zu setzen

korrekte Syntax ist .Formula

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

+0

Es funktioniert nicht? Was ich bekam, ist: #NAME ?, und der Zellenwert ist: = IF (Divider = 0, 0, strTemp) – YLS

+0

, weil Sie in Ihrer Arbeitsmappe keinen benannten Bereich 'Divider' haben. – cyboashu

+0

@cyboashu 'Divider' sollte kein benannter Bereich im Arbeitsblatt sein, da es sich um eine VBA-Projektvariable handelt. – omegastripes

Verwandte Themen