Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

summenformel mit relativen Bezügen (VBA)
#1
Hallo,
ich weiß, für Euch sicher eine triviale Frage ...
... aber ich bin Anfänger.
Ich möchte eine Summenformel in Spalte 6 mit relativen Bezügen eintragen und habe programmiert:
 
    Dim x
    ActiveSheet.UsedRange.Select
    x = Selection.Rows.Count
    Cells(x , 6).Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-1]C[-1]:R[-x]C[-1])"
... "x" wird richtig berechnet, ich bekomme aber die Fehlermeldung
Laufzeitfehler '1004'
Anwendungs- oder objektorientierter Fehler

Sicher nur eine Kleinigkeit für Profis, aber ich finden den Fehler in der Formel nicht.
Bitte Hilfe
Gruß
Rolf
Antworten Top
#2
die formel ist ein text also kann die variable x  dort nicht funktionieren.   Text wird mit "&"  verbunden  "text" & variable & "text"
Antworten Top
#3
Hallo

ixh gkaube das ist noch ein Denkfhler in der Formel!  Was ist mit den Variablen R + C ??  Die beiden Werte R+C sind nicht gesetzt!  = Null
Ausserdem sollte man auf Selectt verzichten.  Aber die Formel muss richtig angepasst werden! Sonst geht sie Rückwaerts über das Blatt hinaus!
Code:
    x = ActiveSheet.UsedRange.Rows.Count
    Cells(x, 6).FormulaR1C1 = "=SUM(R[-1]C[-1]:R[-x]C[-1])"

mfg Gast 123
Antworten Top
#4
Hallo Rolf,

das wäre mein Vorschlag:

Code:
Sub SetzeSummenformel()
    Dim lngSpalte As Long
    lngSpalte = 5
    With ActiveSheet.UsedRange
      .Parent.Cells(.Offset(.Rows.Count).Row, lngSpalte + 1).Formula = "=SUM(" & .Columns(lngSpalte).Address(0, 0) & ")"
    End With
End Sub

Gruß Uwe
Antworten Top
#5
Danke Gast 123 und danke Uwe für die schnelle Antwort.
Die Lösung von Uwe überfordert mich.
Vielleicht darf ich meine Aufgabe noch mal erläutern - unter Verwendung des Vorschlags von Gast 123::

---> Ich möchte lediglich in der folgenden Summenformel den Wert "17" durch den Wert der Variablen "x" ersetzen, den ich mir in der ersten Zeile ausgerechnet habe.

Sub Makro_sum()
x = ActiveSheet.UsedRange.Rows.Count
    Cells(x + 1, 6).FormulaR1C1 = "=SUM(R[0]C[-1]:R[-17]C[-1])"
End Sub

... das ist alles.
Beste Grüße
Rolf
Antworten Top
#6
Hallo,

darf ich deinen letzten Post so interpretieren das du meinen Hinweis ebenso nicht verstanden hast?
x= 7
Cells(x + 1, 6).FormulaR1C1 = "=SUM(R[0]C[-1]:R[" & x & "]C[-1])"

ergibt =SUMME(E8:E15)

X darf aber nicht Negativ sein. denn Cells( x+1)  muß immer > 0 sein. Es gibt keine Zeile 0 oder -1 

Hier liegt der Bock eher vor dem "=" Zeichen


gruß 

rb
Antworten Top
#7
SUPER Ralf, vielen Dank.
Die Syntax mit [" & x & "] dem stellt sich mir zwar ziemlich abenteuerlich und kurios dar - aber es funktioniert!

Es muss nur noch "-x" heißen, denn die Werte oberhalb der Einfügestelle der Formel sollen addiert werden:
x = ActiveSheet.UsedRange.Rows.Count
Cells(x + 1, 6).FormulaR1C1 = "=SUM(R[0]C[-1]:R[" & -x & "]C[-1])"
Hinweis: Die erste Zeile ist eine Leerzeile, deswegen Cells(x + 1, 6)
DANK auch an die Betreuer des Forums!
Beste Grüße
Rolf
Antworten Top
#8
freut mich wenn du der Lösung näher gekommen bist .
Aber  x = -17  und  Cells(x + 1, 6)   
dann wären wir bei Adresse Range("F-16") , oH ,ein Jagdflugzeug  19  
 
Cells(1) ist im Activesheet  A1  Wenn du Cells nicht zu einem bestimmten Bereich innerhalb des Blattes beziehst, dann dürfte Cells(-16 ,6) im Nirvana landen.  

verständlich? 



gruß rb
Antworten Top
#9
Lieber Ralf,
das ist ein Missverständnis.
"x" selber ist eine positive Zahl, in meinem Beispiel besteht das Datenfeld aus 17 Zeilen.
x = ActiveSheet.UsedRange.Rows.Count
Die Formel wird in Spalte 6 auf Höhe der letzten Zeile eingetragen - eine Leerzeile!.
Cells(x + 1, 6).FormulaR1C1 =
Das "-" muss nur in dem Zellbezug durch "-x" ersetzt werden, damit die Werte in den Reihen oberhalb des Eintrags der Summenformel addiert werden.
=SUM(R[0]C[-1]:R[" & -x & "]C[-1])"
Beste Grüße
Rolf
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste