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

Forumthread: FormulaLocal mit variablem Zellbezug

FormulaLocal mit variablem Zellbezug
18.04.2015 20:31:54
henrik
Hallo zusammen,
ich möchte per VBA für Spalte B ab Zelle B1 mit der Funktion FormulaLocal folgende Formel einfügen:
=Text(A1;"0")
Ich habe bisher:
Range("B1").FormulaLocal = "=Text(A1;""0"")"
Soweit so gut. Das Problem ist aber, dass ich so immer den Zellbezug A1 einfüge. Ich möchte aber den Zellbezug variabel halten, so dass ich wenn ich mich in Zelle B2 befinden, die Formel sich auf die Zelle links neben B2 bezieht. Es soll "=Text(A2;"0")" eingefügt werden.
Wie berücksichtige ich diesen variablen Zellbezug in FormulaLocal?

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: FormulaLocal mit variablem Zellbezug
18.04.2015 20:49:23
Luschi
Hallo henrik
hier mal mein Vorschlag:

Sub test1()
Dim j As Long
For j = 1 To 100
ActiveSheet.Range("B" & j).FormulaLocal = "=Text(A" & j & ";""0"")"
Next j
End Sub
oder als einzelne Zeilen:
ActiveSheet.Range("B1").FormulaLocal = "=Text(A" & Range("B1").Row & ";""0"")"
ActiveSheet.Range("B2").FormulaLocal = "=Text(A" & Range("B2").Row & ";""0"")"
Gruß von Luschi
aus klein-Paris

Anzeige
AW: FormulaLocal mit variablem Zellbezug
18.04.2015 21:28:00
henrik
Danke für die schnelle Antwort, funktioniert perfekt!

AW: FormulaLocal mit variablem Zellbezug -> R1C1
20.04.2015 12:41:18
Daniel
Hi
noch einfacher gehts mit R1C1- bzw Z1S1-Zellbezügen in der Formel.
diese könnten auch relatvie Zellbezüge beschreiben (in A1 müssen auch relative Zellbezüge mit einer absoluten Adresse beschrieben werden):
Range("B1").FormulaR1C1Local = "=Text(ZS(-1);""0"")"

oder
Range("B1").FormulaR1C1Local = "=Text(ZS1;""0"")"
für weitere Zeilen kannst du dann dieselbe Formel verwenden:
Range("B2").FormulaR1C1Local = "=Text(ZS(-1);""0"")"

das z steht für Zeile und das S für Spalte.
danach folgt bei absoluten Zellbezügen die Zeilen- oder Spaltennumemr,
bei relativen Zellbezügen der Versatzwert des Bezuges in Klammern, hierbei steht ein negativer wert für "nach oben" oder "nach links" und ein positiver Wert für "nach unten" oder "nach rechts".
relative Bezüge auf die gleiche Zeile oder Spalte, welches ein (0) ergeben würden, kann man wie im Beispiel gezeigt auch weglassen.
der Vorteil der Z1S1-Bezugsart ist, dass man bei relativen Zellbezügen die Adresse nicht abhängig von der Einfügezelle "berechnen" muss, sondern für alle Zellen den selben Formeltext verwenden kann.
Ausserdem wird auch die Spalte als zahl angegeben, was hilfreich ist, wenn für die formel die Spaltenbeezüge tatsächlich mal berechnet werden sollen, weil dann die Konvertierung in den Spaltenbuchctaben entfällt.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA: FormulaLocal mit variablem Zellbezug


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf VBAProject (DeineArbeitsmappe), wähle Einfügen und dann Modul.

  3. Schreibe den VBA-Code: Verwende den folgenden Code, um die FormulaLocal-Funktion mit einem variablen Zellbezug zu nutzen:

    Sub FormelnMitVariablenZellbezug()
       Dim j As Long
       For j = 1 To 100
           ActiveSheet.Range("B" & j).FormulaLocal = "=Text(A" & j & ";""0"")"
       Next j
    End Sub

    Dieser Code fügt die Formel =Text(A1;"0") bis =Text(A100;"0") in die entsprechenden Zellen in Spalte B ein.

  4. Führe den Code aus: Drücke F5, um das Makro auszuführen. Die Formeln werden automatisch in die Zellen eingefügt.


Häufige Fehler und Lösungen

  • Fehler: "Typen unverträglich": Stelle sicher, dass alle verwendeten Variablen korrekt deklariert sind und der Datentyp stimmt.

  • Problem mit dem Zellbezug: Achte darauf, dass der Zellbezug korrekt ist. Verwende .Row, um die aktuelle Zeile dynamisch zu referenzieren.


Alternative Methoden

Eine alternative Methode ist die Verwendung von FormulaR1C1Local, die es dir ermöglicht, relative Zellbezüge einfacher zu handhaben. Beispiel:

ActiveSheet.Range("B1").FormulaR1C1Local = "=Text(RC[-1];""0"")"

Hierbei bedeutet RC[-1], dass der Bezug auf die Zelle in der gleichen Zeile und einer Spalte links erfolgt.


Praktische Beispiele

  • Beispiel 1: Wenn du die Formel für die gesamte Spalte B einfügen möchtest, kannst du den vorherigen VBA-Code verwenden.

  • Beispiel 2: Wenn du nur eine einzelne Zelle ansprechen möchtest:

    ActiveSheet.Range("B2").FormulaLocal = "=Text(A" & Range("B2").Row & ";""0"")"
  • Beispiel 3: Mit FormulaR1C1Local für die Zelle B2:

    ActiveSheet.Range("B2").FormulaR1C1Local = "=Text(RC[-1];""0"")"

Tipps für Profis

  • Nutze Application.WorksheetFunction für komplexere Berechnungen in VBA.
  • Experimentiere mit FormulaR1C1Local, um die Flexibilität bei relativen Zellbezügen zu erhöhen.
  • Halte deine VBA-Projekte gut dokumentiert, um den Überblick über den Code und die verwendeten Formeln zu behalten.

FAQ: Häufige Fragen

1. Wie kann ich die Formel auf andere Bereiche anwenden?
Du kannst den For-Loop anpassen, um die Formeln in einen beliebigen Bereich einzufügen.

2. Was ist der Unterschied zwischen FormulaLocal und FormulaR1C1Local?
FormulaLocal verwendet standardmäßige A1-Referenzen, während FormulaR1C1Local R1C1-Referenzen nutzt, was bei relativen Zellbezügen oft einfacher ist.

3. Kann ich auch andere Funktionen in der Formel verwenden?
Ja, du kannst jede Excel-Funktion innerhalb der FormulaLocal oder FormulaR1C1Local verwenden, solange die Syntax korrekt ist.

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