Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variable FormulaR1C1

Forumthread: Variable FormulaR1C1

Variable FormulaR1C1
26.12.2002 02:02:13
Thomas
Hallo zusammen..

ich habe hier ein (kleines) Problem. Habe eine Tabelle mit beliebig vielen Zeilen. Vor dem automatischen Zeilenumbruch wird ein Zwischentotal eingefügt. Auf der letzten Zeile möchte ich nun das Total für die Spalte E bis AE von Zeile 11 bis x. Dazu zähle ich zuerst alle Zwischentotal zusammen (Variable erg), welche ich von der Summe abziehen will. Funkt alles Prima bis zur Stelle: "ActiveCell.Offset(0, s - 1).Formula = "=Summe(E11:E" & i2 - 1 & ")" & -erg", da immer die Spalte E berechnet wird. Habe schon mit FormulaR1C1 ausprobiert, gibt mir aber immer den Fehlerwert #Name$ zurück oder schreibt bloss =Sum(R11C5:R121C5) in die Zelle.
Ich hoffe, das ich mich verständlich ausgedrückt habe und mir jemand helfen kann. Vielen, vielen Dank. Gruss Thomas

Sub FormelTotal()
Dim erg As Currency
Dim i As Integer, i2 As Integer, s As Integer
Dim Zeile As Integer
Zeile = 11
Do While Cells(Zeile, 1) <> ""
Zeile = Zeile + 1
Loop
Range("A11").Select
erg = 0
For s = 5 To 31
For i = 1 To Zeile
If ActiveCell.Value = "Zwischentotal" Then
erg = ActiveCell(1, s).Value + erg
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Next
Range("A65535").End(xlUp).Offset(0, 0).Select
i2 = ActiveCell.Row - 1
On Error Resume Next
ActiveCell.Offset(0, s - 1).Formula = "=Summe(E11:E" & i2 - 1 & ")" & -erg
Range("A11").Select
erg = 0
Next
Range("A11").Select
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Variable FormulaR1C1
26.12.2002 13:34:57
Ramses
Verwende

ActiveCell.Offset(0, s - 1).FormulaLocal = "=Summe(E11:E" & i2 - 1 & ")"

Das "-erg" kannst du so nicht verwenden weil es als Funktionsname eingesetzt wird.
Die Variable kannst du nur in deinem Makro verwenden.

Workaraound:

X = Application.WorksheetFunction.Sum(E11:E" & i2 - 1 & ")"
x = x-erg
ActiveCell.Offset(0, s - 1) = x

Alternativ schau dir mal diesen Beitrag an.

Da kannst du wählen wo du die Teilsummen haben willst, wahlweise auch in der Fusszeile.
Die Teilsummen werden jeweils in der letzten Zelle einer wählbaren Spalte vor dem Seitenumbruch angelegt.

Gruss Rainer

Gruss Rainer

Anzeige
Re: Variable FormulaR1C1
26.12.2002 13:57:30
Thomas
Hallo Rainer,

Danke für deine Antwort. Habe die Zeile noch etwas abgeändert und es klappt schon.

ActiveCell.Offset(0, s - 1).FormulaR1C1 = "=sum(R" & intRow & "C" & intCol & ":R" & intRow + 110 & "C" & intCol & ")" & -erg

Aber ich nehme deinen Rat gerne zur Kenntniss und werde es entsprechend abändern (bin eben VBA-Neuling). Nur habe ich immer noch das weiter oben beschriebene Problem(chen) mit der "Z1S1" Bezugsart. tja tja
Dank dir

Anzeige
;
Anzeige

Infobox / Tutorial

Verwendung von FormulaR1C1 mit Variablen in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinWorkbookName)" > Einfügen > Modul.

  3. Kopiere den folgenden VBA-Code in das neue Modul:

    Sub FormelTotal()
        Dim erg As Currency
        Dim i As Integer, i2 As Integer, s As Integer
        Dim Zeile As Integer
        Zeile = 11
        Do While Cells(Zeile, 1) <> ""
            Zeile = Zeile + 1
        Loop
        Range("A11").Select
        erg = 0
        For s = 5 To 31
            For i = 1 To Zeile
                If ActiveCell.Value = "Zwischentotal" Then
                    erg = ActiveCell(1, s).Value + erg
                End If
                ActiveCell.Offset(1, 0).Select
            Next
            Range("A65535").End(xlUp).Offset(0, 0).Select
            i2 = ActiveCell.Row - 1
            On Error Resume Next
            ActiveCell.Offset(0, s - 1).FormulaR1C1 = "=SUM(R" & Zeile & "C5:R" & i2 - 1 & "C5)" - erg
            Range("A11").Select
            erg = 0
        Next
        Range("A11").Select
    End Sub
  4. Passe die Formel an: Stelle sicher, dass du die richtige Zeile und Spalte für deine Daten angibst. Hier wird FormulaR1C1 verwendet, um eine Summe zu bilden.

  5. Führe das Makro aus: Drücke F5 oder gehe zurück zum Excel-Fenster und führe das Makro aus, um die Berechnung durchzuführen.


Häufige Fehler und Lösungen

  • Fehler: #NAME?
    Dieser Fehler tritt häufig auf, wenn die englische Formel verwendet wird, während die lokale Sprache eingestellt ist. Verwende FormulaLocal anstelle von Formula, um lokale Formeln zu verwenden.

    ActiveCell.Offset(0, s - 1).FormulaLocal = "=SUM(E11:E" & i2 - 1 & ")"
  • Problem mit Variablen in Formeln:
    Du kannst Variablen nicht direkt in die Formel einfügen. Verwende stattdessen eine separate Variable, um den berechneten Wert zu speichern und dann das Ergebnis in die Zelle zu schreiben.

    Dim x As Double
    x = Application.WorksheetFunction.Sum(Range("E11:E" & i2 - 1)) - erg
    ActiveCell.Offset(0, s - 1).Value = x

Alternative Methoden

Eine alternative Methode zur Berechnung von Summen in Excel ist die Verwendung von Application.WorksheetFunction. Statt FormulaR1C1 kannst du die Funktion direkt in deinem VBA-Code verwenden:

Dim total As Double
total = Application.WorksheetFunction.Sum(Range("E11:E" & i2 - 1))
ActiveCell.Offset(0, s - 1).Value = total - erg

Praktische Beispiele

Hier ist ein einfaches Beispiel, um die Funktionsweise von FormulaR1C1 zu demonstrieren:

Sub BeispielFormulaR1C1()
    Dim intRow As Integer
    Dim intCol As Integer
    intRow = 11
    intCol = 5 ' Spalte E
    ActiveCell.FormulaR1C1 = "=SUM(R" & intRow & "C" & intCol & ":R" & intRow + 10 & "C" & intCol & ")"
End Sub

Dieses Beispiel berechnet die Summe der Zellen E11 bis E21 und fügt das Ergebnis in die aktuelle Zelle ein.


Tipps für Profis

  • Verwende Option Explicit zu Beginn deiner Module. Dies zwingt dich, alle Variablen zu deklarieren, was die Fehlersuche erleichtert.

  • Nutze Debug.Print um Werte von Variablen während der Ausführung zu überprüfen. Dies kann hilfreich sein, um sicherzustellen, dass deine Berechnungen korrekt sind.

    Debug.Print "Erg: " & erg
  • Setze On Error Resume Next mit Bedacht ein. Es kann nützlich sein, um Fehler zu ignorieren, aber es kann auch dazu führen, dass du Probleme übersiehst.


FAQ: Häufige Fragen

1. Wie kann ich FormulaR1C1 mit Variablen verwenden?
Du kannst Variablen in der Formel verwenden, indem du sie in die String-Interpolation einfügst. Beispiel:

ActiveCell.FormulaR1C1 = "=SUM(R" & Zeile & "C5:R" & i2 - 1 & "C5)"

2. Was ist der Unterschied zwischen Formula und FormulaR1C1?
Formula verwendet die A1-Notation, während FormulaR1C1 die R1C1-Notation verwendet. R1C1 ist oft nützlicher für dynamische Zellreferenzen in VBA.

3. Wie kann ich Fehler bei der Verwendung von ActiveCell vermeiden?
Stelle sicher, dass die aktive Zelle sich auf die richtige Zelle bezieht, bevor du Berechnungen durchführst. Verwende Set und Range, um spezifische Zellen auszuwählen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige