2016-12-01 5 views
0

Ich habe diesen Code:Excel 2010 VBA Formel mit variabler vermasselt

LastLine = Range("C" & Rows.Count).End(xlUp).Row 
LastLine = "C" & LastLine 
Range(LastLine).Select 
ActiveCell.FormulaR1C1 = "=SUM(R4C3:R[-1]C)" 
Range("E13").FormulaR1C1 = "=if(R12C5 - " & LastLine & " <> 0,R12C5 - " & LastLine & ","""")" 

alle Arbeit für die Formel erwarten, dass das Ergebnis für das heißt

„= IF ($ E $ 12 - $ Z: $ Z <> 0, $ E $ 12 - $ Z: $ Z, "") "

Kann jemand sehen, was ich falsch mache? auch wenn ich versuche,

LastLine = Range(LastLine).address 

Es gibt mir einen Fehler

+0

Versuchen 'Letztzeile = "C" & Cells (Rows.Count, "C"). End (xlUp) .Row' statt – Rdster

+0

Was erwarten Sie die Formel sein? – Comintern

+0

die Formel sollte sein "= IF ($ E $ 12 - C# <> 0, $ E $ 12 - C#," ")" wo es die letzte Zeile –

Antwort

1

Da Sie Z1S1-Notation verwenden Sie CsomeRow zu RsomeRowC3

Range("E13").FormulaR1C1 = "=if(R12C5 - R" & LastLine & "C3 <> 0,R12C5 - R" & LastLine & "C3,"""")" 
+0

findet Ich dachte nur, ich könnte die normale Adresse von C26 verwenden vergessen ich sollte stecke es in den R26C3 Danke für die Hilfe –

+1

Gern geschehen. Das ist ein häufiger Fehler – user3598756

2

Die Variable Letztzeile nicht eingegeben zu übersetzen haben und Sie seine ändern Geben Sie in Ihrem Code ein. Zuerst ist es eine Nummer (die Nummer der Zeile), dann weisen Sie ihm den Text zu, den Buchstaben C kombiniert mit der Zeilennummer, zum Beispiel "C3". Als Nächstes verwenden Sie das in einer R1C1-Referenz, wobei C3 für Spalte 3 steht, sodass die Zeilennummer aus der ersten LastLine-Zuweisung als Spalte in der Formel endet.

Ihr Code wäre sauberer, wenn Ihre Variablen auf bestimmte Typen abgeblendet wären und Sie die A1-Notation nicht mit R1C1 mischen würden.

Sub test() 
Dim LastLine As Long 
Dim LastLineCell As String 

LastLine = Range("C" & Rows.Count).End(xlUp).Row 
LastLineCell = "C" & LastLine 
Range(LastLineCell).Select 
ActiveCell.FormulaR1C1 = "=SUM(R4C3:R[-1]C)" 
Range("E13").FormulaR1C1 = "=if(R12C5 - R" & LastLine & "C26 <> 0,R12C5 - R" & LastLine & "C26,"""")" 
End Sub