2016-09-09 8 views
0

Ich entschuldige mich für solch eine einfache Frage. Ich habe das zu Tode gegooglet, und ich kann nicht herausfinden, warum das nicht funktionieren wird. Ich möchte nur eine neue Zeile hinzufügen und eine Formel in eine Zelle einfügen.Excel VBA Erstellen einer Formel aus Variablen

Mein Code ist dies

Private Sub CommandButton1_Click() 

    Dim lRow As Long 
    Dim lStr As String 
    Dim nRow As Long 
    Dim nStr As String 

    lRow = Cells(Rows.Count, 5).End(xlUp).Row 
    lStr = CStr(lRow) 
    nRow = lRow + 1 
    nStr = CStr(nRow) 

    Cells(nRow, 1).Value = Date 
    Cells(nRow, 2).Value = "" 
    Cells(nRow, 3).Value = 25 
    Cells(nRow, 4).Value = 53 
    Cells(nRow, 5).Select 
    ActiveCell.formula = "=IF(AND(C" & nRow & "=""""|D" & nRow & "="""")|""""|E" & lRow & "-C" & nRow & "+D" & nRow & ")" 

End Sub 

Ich habe versucht, in der Formel des Zeichenfolge Wert der Zeile mit (unter Verwendung von nStr statt nRow, etc).

Wenn ich das "=" - Zeichen am Anfang entferne und es als Wert einfüge, fügt es ein, und wenn ich dann das "=" über Excel hinzufüge, wird es gut, also kenne ich das Format der Formel als a Die Saite ist in Ordnung.

Aber warum wird es nicht die Formel einfügen?

Ich habe es auch in der r1c1 Notation versucht.

Irgendwelche Ideen?

Beachten Sie, dass die Werte 25 und 53 temporäre Werte sind. Der Endbenutzer gibt manuell Werte in diese Zellen ein.

+1

Ersetzen Sie die '|' mit Komma ','. VBA ist sehr amerikanisch zentrisch und die Formeln müssen als Standard US-amerikanisches Format eingegeben werden. –

+0

Wow. Das hat funktioniert. Wenn ich also = IF (UND (C6 = "" | D6 = "") | "" | E5-C6 + D6) manuell in die Zelle eintrage, funktioniert es, aber über VB muss ich = IF (UND (C6 = "", D6 = "", "", E5-C6 + D6). DANKE –

Antwort

0

Es stellte sich heraus, dass, obwohl

=IF(AND(C6=""|D6="")|""|E5-C6+D6) 

funktioniert, wenn Sie es in eine Zelle manuell eingeben, durch VB Sie benötigen das Pipe-Symbol mit einem Komma zu ersetzen. So ändert meine Formel

ActiveCell.formula = "=IF(AND(C" & nRow & "="""",D" & nRow & "=""""),"""",E" & lRow & "-C" & nRow & "+D" & nRow & ")" 

löste das Problem