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

Forumthread: variable R1C1 Bezüge in VBA

variable R1C1 Bezüge in VBA
22.02.2006 13:31:00
Georg
Hallo Kollegen, mein Problem scheint auf den ersten Blick echt einfach zu sein. Anscheinend bin ich mitlerweile Betriebsblind und erkenne den Fehler nicht.
Also, ich möchte eine ganz einfache WENN-Formeln in Zelle schreiben, via Makro.
die formeln so aussehen: =WENN(M10="";"";Z16)
Total einfach oder?
Per Makro recorder sieht das dann so aus:
AktiveCell.FormulaR1C1 = "=IF(R[6]C[9]="""","""",R[2]C[22])"
Klappt Wunderbar, Makro läuft, freude auf ganzer Front.
Jetzt möchte ich diese Formel aber in einer schleife mehrmals schreiben und jedesmal die Zielzellen nach rechts versetzt
(aus zelle M10 wird bsp. P10 usw.)
Nun dachte ich mir, einfach die R1C1-bezüge mite iner variablen ausgetauscht. Sieht dann so aus:
Dim zeintrag, zprozent
zeintrag = 13 + versatz 'die Variable versatz wird anhand der schleife errechnet
zprozent = 26 + versatz
ActiveCell.FormulaR1C1 = "=IF(R[6]C[zeintrag]="""","""",R[2]C[zprozent])"
Und jetzt kommtdie fehlermeldung " Laufzeitfehler 1004 Anwendungs- oder objektdifinierter Fehler"
HILFE!!!! WARUM?
Ich habe doch nur die Zahlen 9 / 22 durch variablen ersetzt.
Danke für jede Hilfe
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: variable R1C1 Bezüge in VBA
22.02.2006 13:41:52
u_
Hallo,
die Formel ist ein String und den musst du auch entsprechend zusammenbasteln.
ActiveCell.FormulaR1C1 = "=IF(R[6]C[" &zeintrag &"]="""","""",R[2]C[" &zprozent &"])"
Gruß
Geist ist geil!
AW: variable R1C1 Bezüge in VBA
22.02.2006 13:54:22
Georg
WOW das nenn ich eine schnelle Antwort.
Vielen Dank. Es klappt problemlos.
Auf die Idee mit den String bin ich gar nicht gekommen. Jetzt wo du es schreibst wird es mir sofort klar.
Nochmals vielen Dank
Gruß
Georg
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Variable R1C1 Bezüge in VBA nutzen


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Neues Modul einfügen: Klicke mit der rechten Maustaste auf einen der Objekte im Projektfenster und wähle Einfügen > Modul.

  3. Code eingeben: Füge den folgenden Code in das Modul ein:

    Sub BeispielR1C1()
        Dim zeintrag As Integer
        Dim zprozent As Integer
        Dim versatz As Integer
    
        versatz = 1 ' Beispielwert für Versatz
    
        For i = 0 To 10 ' Schleife für 10 Iterationen
            zeintrag = 13 + versatz + i ' Berechnung für die Zeilennummer
            zprozent = 26 + versatz + i ' Berechnung für die Spaltennummer
    
            ActiveCell.Offset(0, i).FormulaR1C1 = "=IF(R[6]C[" & zeintrag & "]="""","""",R[2]C[" & zprozent & "])"
        Next i
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle BeispielR1C1 und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt auf, wenn Du versuchst, Variablen direkt in eine Formel einzufügen. Stelle sicher, dass Du die Variablen in den String einfügst, wie im vorherigen Beispiel gezeigt:

    ActiveCell.FormulaR1C1 = "=IF(R[6]C[" & zeintrag & "]="""","""",R[2]C[" & zprozent & "])"
  • Falsche Zellbezüge: Überprüfe, ob die Berechnung der zeintrag und zprozent Variablen korrekt ist, um sicherzustellen, dass die richtigen Zellen adressiert werden.


Alternative Methoden

  • Direkte Eingabe von Formeln: Anstelle von FormulaR1C1 kannst Du auch Formula verwenden, wenn Du die A1-Notation bevorzugst:

    ActiveCell.Formula = "=IF(M10="""","""",Z16)"
  • Verwendung von Named Ranges: Definiere benannte Bereiche in Excel, um die Referenzen zu vereinfachen.


Praktische Beispiele

  1. Formel mit R1C1 und Variablen:

    Sub BeispielFormel()
        Dim versatz As Integer
        versatz = 1
    
        ActiveCell.FormulaR1C1 = "=IF(R[6]C[" & (10 + versatz) & "]="""","""",R[2]C[" & (22 + versatz) & "])"
    End Sub
  2. Wiederholte Anwendung in einer Schleife:

    Sub SchleifenBeispiel()
        Dim i As Integer
        For i = 1 To 5
            ActiveCell.Offset(i, 0).FormulaR1C1 = "=SUM(RC[-1]:RC[-5])"
        Next i
    End Sub

Tipps für Profis

  • Debugging: Nutze Debug.Print, um die generierten Formeln in der Konsole auszugeben und Fehler leichter zu identifizieren.

  • Variablen sorgfältig benennen: Verwende aussagekräftige Namen für Deine Variablen, um den Code verständlicher zu machen.

  • Verwende die Excel VBA RC Notation: Diese Notation ist besonders nützlich, wenn Du mit dynamischen Zellbezügen arbeitest.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen R1C1 und A1 Notation?
R1C1 ist eine relative Notation, die Zeilen und Spalten als Zahlen angibt, während A1 Buchstaben für Spalten und Zahlen für Zeilen verwendet.

2. Wie kann ich R1C1-Bezüge in einer Funktion verwenden?
Du kannst R1C1-Bezüge in Excel VBA-Funktionen genauso verwenden wie in der Zelle, indem Du sie als String zusammenbaust, z.B. ActiveCell.FormulaR1C1 = "=SUM(R[1]C:R[10]C)".

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