Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Unterschiede FormulaR1C1 and FormulaLocal

Unterschiede FormulaR1C1 and FormulaLocal
01.07.2004 06:24:28
Karsten
Hallo Forumler,
der makro-recorder liefer etwas mit
ActiveCell.FormulaR1C1...,
wenn ich das aber in mein makro einbaue mit vorheriger selektion der gewuenschten zelle erhalte ich nur laufzeitfehler 1004.
Beim rumprobieren stellte sich raus, dass
ActiveCell.FormulaLocal...
hingegen funktioniert.
Woran liegt das? Ich habe leider keine hilfe-datei auf dem notebook installiert, kann also nicht selbst die unterschiede zw. beiden befehlen nachschlagen.
Danke im voraus.
Gruss
Karsten
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Unterschiede FormulaR1C1 and FormulaLocal
Rolf
Hallo Karsten
Hier der Hilfe-Text:
Gibt die Formel für das Objekt unter Verwendung von Z1S1-Bezügen in der Sprache des Makros zurück oder legt einen Wert für sie fest. Variant-Wert mit Lese-/Schreibzugriff für Range-Objekte, String-Wert mit Lese-/Schreibzugriff für Series-Objekte.
Hinweise
Wenn die Zelle eine Konstante enthält, gibt diese Eigenschaft eine Konstante zurück. Ist die Zelle leer, wird eine leere Zeichenfolge zurückgegeben. Enthält die Zelle eine Formel, wird diese als Zeichenfolge zurückgegeben, und zwar in dem gleichen Format, in dem sie in der Bearbeitungsleiste angezeigt würde (einschließlich Gleichheitszeichen).
Wenn Sie für den Wert oder die Formel einer Zelle ein Datum festlegen, prüft Microsoft Excel, ob die Zelle bereits mit einem der Datums- oder Zeitformate formatiert wurde. Ist dies nicht der Fall, wird das Zahlenformat in das Standardzahlenformat für kurze Datumsangaben geändert.
Wenn der Bereich einen ein- oder zweidimensionalen Bereich darstellt, können Sie für die Formel eine Visual Basic-Matrix mit derselben Dimension festlegen. Ebenso können Sie die Formel auch in eine Visual Basic-Matrix einfügen.
Durch das Festlegen einer Formel eines mehrere Zellen umfassenden Bereichs werden alle Zellen des Bereichs mit der Formel aufgefüllt.
Beispiel
In diesem Beispiel wird die Formel für Zelle B1 in Sheet1 festgelegt.
Worksheets("Sheet1").Range("B1").FormulaR1C1 = "=SQRT(R1C1)"
Und von Formiula.Local
Gibt die Formel für das Objekt unter Verwendung von A1-Bezügen in der Sprache des Benutzers zurück oder legt einen Wert für sie fest. Variant-Wert mit Lese-/Schreibzugriff für Range-Objekte, String-Wert mit Lese-/Schreibzugriff für Series-Objekte.
Hinweise
Wenn die Zelle eine Konstante enthält, gibt diese Eigenschaft eine Konstante zurück. Ist die Zelle leer, wird eine leere Zeichenfolge zurückgegeben. Enthält die Zelle eine Formel, wird diese als Zeichenfolge zurückgegeben, und zwar in dem gleichen Format, in dem sie in der Bearbeitungsleiste angezeigt würde (einschließlich Gleichheitszeichen).
Wenn Sie für den Wert oder die Formel einer Zelle ein Datum festlegen, prüft Microsoft Excel, ob die Zelle bereits mit einem der Datums- oder Zeitformate formatiert wurde. Ist dies nicht der Fall, wird das Zahlenformat in das Standardzahlenformat für kurze Datumsangaben geändert.
Wenn der Bereich einen ein- oder zweidimensionalen Bereich darstellt, können Sie für die Formel eine Visual Basic-Matrix mit derselben Dimension festlegen. Ebenso können Sie die Formel auch in eine Visual Basic-Matrix einfügen.
Durch das Festlegen einer Formel eines mehrere Zellen umfassenden Bereichs werden alle Zellen des Bereichs mit der Formel aufgefüllt.
Beispiel
Angenommen, die Formel =SUMME(A1:A10) in Zelle A11 in Arbeitsblatt 1 wurde mit der deutschen Version von Microsoft Excel erstellt. Wenn Sie diese Arbeitsmappe auf einem Computer öffnen, auf dem die US-amerikanische Version installiert ist, wird nach Ausführung des folgenden Makros die Formel =SUM(A1:A10) in einem Meldungsfeld angezeigt.
MsgBox Worksheets(1).Range(A11).FormulaLocal
Es sin zwei verschieden Arten von Bezügen, wie man Zellen Deffinieren kann:
R1C1 heisst Row/Cell und wird immer von der gerade Aktiven Zelle gerechnet mit Minus und plus Werten.
Gruss
Rolf
Anzeige
AW: Unterschiede FormulaR1C1 and FormulaLocal
Rolf
Also nach mal zu R1C1:
Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[1]+RC[2]"
Range("A2").Select
Bedeutet:
A1 enthält die Formel
R bedeutet Reihe (Row) C bedeutet Spalte (Colum) positive Werte nach rechts oder Unten
Negative Werte nach links oder oben!
Somit heisst =RC[1]+RC[2]
=keine Reihe 1 Spalte nach Rechts + Keine Reihe 2 Spalten nach Rechts
A1=B1+C1
Gruss Rolf
Anzeige
AW: Unterschiede FormulaR1C1 and FormulaLocal
Karsten
Hallo Rolf,
vielen dank :)
Der knackpunkt ist also die jeweils aktive zelle, nicht ob man absolute oder relative bezuege hat. Wieder etwas dazugelernt.
Gruss
Karsten
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Unterschiede zwischen FormulaR1C1 und FormulaLocal


Schritt-für-Schritt-Anleitung

  1. Verwendung von FormulaR1C1:

    • Um eine Formel in einer Zelle mit R1C1-Referenzen zu setzen, wähle die gewünschte Zelle aus und verwende folgenden Code:
      ActiveCell.FormulaR1C1 = "=SQRT(R1C1)"
    • Dabei wird die Formel relativ zur aktiven Zelle interpretiert.
  2. Verwendung von FormulaLocal:

    • Für die Verwendung von Formeln in der Sprache des Benutzers kannst du den folgenden Code nutzen:
      ActiveCell.FormulaLocal = "=SUMME(A1:A10)"
    • Diese Methode ist besonders nützlich, wenn du mit mehreren Sprachversionen von Excel arbeitest.
  3. Wählen der aktiven Zelle:

    • Achte darauf, dass die richtige Zelle aktiv ist, bevor du die Formel setzt. Du kannst die Zelle wie folgt auswählen:
      Range("A1").Select

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt häufig auf, wenn die aktive Zelle nicht korrekt ausgewählt wurde. Stelle sicher, dass du die Zelle vor dem Setzen der Formel auswählst.

  • Formel wird nicht erkannt: Wenn du eine Formel mit ActiveCell.FormulaR1C1 setzt, die in deiner Sprachversion nicht korrekt übersetzt werden kann, könnte es an der Verwendung von nicht unterstützten Funktionen liegen.


Alternative Methoden

  • Nutzung von Formeln in Arrays: Du kannst auch mehrere Zellen mit einer einzigen Formel befüllen. Verwende dazu eine Visual Basic-Matrix:

    Dim myArray(1 To 2, 1 To 2) As Variant
    myArray(1, 1) = "=RC[1]+RC[2]"
    Range("A1:B2").FormulaR1C1 = myArray
  • Direktes Setzen von Formeln: Du kannst auch direkt eine Formel in eine Zelle eingeben, ohne die aktive Zelle zu verwenden:

    Worksheets("Sheet1").Range("B1").FormulaLocal = "=SUMME(A1:A10)"

Praktische Beispiele

  1. Beispiel für FormulaR1C1:

    Sub SetFormulaR1C1()
       Range("C1").FormulaR1C1 = "=RC[-1]+RC[-2]"
    End Sub

    Dieser Code addiert die Werte in den Zellen A1 und B1 und zeigt das Ergebnis in C1.

  2. Beispiel für FormulaLocal:

    Sub SetFormulaLocal()
       Range("C1").FormulaLocal = "=SUMME(A1:B1)"
    End Sub

    Hier wird die Summe der Zellen A1 und B1 in C1 angezeigt.


Tipps für Profis

  • Verwendung von ActiveCell: Achte darauf, dass ActiveCell auf die richtige Zelle zeigt. Überprüfe dies durch Debuggen oder durch das Hinzufügen von MsgBox-Ausgaben.

  • Unterschiedliche Sprachversionen: Wenn du mit einer internationalen Excel-Umgebung arbeitest, verwende FormulaLocal, um Komplikationen mit Sprachunterschieden zu vermeiden.

  • Testen von Formeln: Überprüfe deine Formeln in einer Testumgebung, bevor du sie in größeren Makros anwendest.


FAQ: Häufige Fragen

1. Was ist der Hauptunterschied zwischen FormulaR1C1 und FormulaLocal? Der Hauptunterschied liegt in der Art der Referenzen. FormulaR1C1 verwendet Zeilen- und Spaltenbezüge relativ zur aktiven Zelle, während FormulaLocal die Formel in der Sprache des Benutzers zurückgibt.

2. Warum erhalte ich Laufzeitfehler 1004? Dieser Fehler tritt auf, wenn die aktive Zelle nicht korrekt ausgewählt ist oder die Formel ungültig ist. Stelle sicher, dass die Zelle existiert und die Formel korrekt ist.

3. Kann ich beide Methoden in einem Makro kombinieren? Ja, du kannst beide Methoden in einem Makro verwenden, um die Vorzüge von beiden zu nutzen, je nach Bedarf.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige