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

Forumthread: Formel in VBA dynamisch erstellen und in Zelle sch

Formel in VBA dynamisch erstellen und in Zelle sch
24.06.2008 11:48:00
braleta
Hallo Gemeinde,
wie kann ich im VBA eine Formel dynamisch erstellen und in eine Zelle schreiben, so dass ich in dieser Zelle das Ergebnis finde?
Es geht mir hierbei um das Prinzip.
Herzlichen Dank!
...braleta

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel in VBA dynamisch erstellen und in Zelle
24.06.2008 12:04:00
Tobias
Hallo braleta!
Möchtest Du per VBA eine Excel-Formel ein eine Zelle schreiben oder eine VBA-Funktion für Excel schreiben?
Tabelle1

 AB
115
266

Formeln der Tabelle
ZelleFormel
A2=SUMME(A1:B1)
B2=addiere(A1;B1)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Public Function Addiere(ersterSummand As Range, zweiterSummand As Range) As Double 'Dieser Code steht in einem Modul, nicht Arbeitsblatt! Addiere = ersterSummand + zweiterSummand End Function


Schönen Gruß, Tobias
http://www.tobiasschmid.de/

Anzeige
AW: Formel in VBA dynamisch erstellen und in Zelle
24.06.2008 15:34:10
braleta
Hallo Tobias,
ich möchte (muss) per VBA eine Formel in eine Zelle schreiben.
Nur ein Beispiel: wenn ich in der Zeile "5" im Bereich "B5:AB5" Werte stehen habe, möchte ich per VBA in die Zelle "A5" die Formel "=zählenwenn(B5:AB5;"WERT") schreiben.
:-)
Danke für jede Art von Hilfe
...braleta :-)

Anzeige
AW: Formel in VBA dynamisch erstellen und in Zelle
25.06.2008 00:21:00
Daniel
HI
das geht so(in den verschiedenen Varianten):
Range("A5").formula = "=CountIF(B5:AB5,""WERT"")"
Range("A5").fomlulaLocal = "=zählenwenn(B5:AB5;""WERT"")"
Range("A5").forumlaR1C1 = "=CountIF(RC2:RC28,"WERT")"
Range("A5").FormulaR1C1Local = "=zählenwenn(ZS2:ZS28;""WERT"")"
wenn du das ganze dynamisch (also angepasst an die tatsächliche Spaltenzahl) benötigst, dann musst du den Formelstring entsprechend zusammenbasteln:
Range("A5").FormulaR1C1Local = "=zählenwenn(ZS2:ZS" & Cells(5,256).end(xltoleft).column & ";""WERT"")"
Gruß, Daniel

Anzeige
AW: Formel in VBA dynamisch erstellen und in Zelle
25.06.2008 11:06:46
braleta
Daniel,
herzlichen Dank, auf diese Lösung bin ich nicht gekommen!
Super, und danke!
braleta
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dynamische Formeln in Excel VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine Formel in VBA dynamisch zu erstellen und in eine Zelle zu schreiben, kannst Du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor. Dies kannst Du tun, indem Du ALT + F11 drückst.

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

  3. Schreibe den folgenden Code, um eine Formel in eine Zelle zu schreiben:

    Sub FormelInZelleSchreiben()
       Dim letzteSpalte As Long
       letzteSpalte = Cells(5, 256).End(xlToLeft).Column
       Range("A5").FormulaR1C1Local = "=zählenwenn(B5:AB5;""WERT"")"
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus, um die Formel in Zelle A5 zu platzieren.


Häufige Fehler und Lösungen

  • Fehler: Run-time error '1004': Application-defined or object-defined error

    • Lösung: Überprüfe, ob der Bereich, in den Du die Formel einfügst, korrekt definiert ist. Achte darauf, dass die Zellen nicht schreibgeschützt sind.
  • Fehler: Formel wird nicht korrekt angezeigt

    • Lösung: Stelle sicher, dass die Syntax der Formel korrekt ist. Achte darauf, dass das richtige Trennzeichen (Komma oder Semikolon) verwendet wird, abhängig von den Regionseinstellungen.

Alternative Methoden

Wenn Du die Formel in eine Zelle schreiben möchtest, gibt es mehrere Ansätze:

  • Direktes Schreiben der Formel:

    Range("A5").Formula = "=SUMME(B5:AB5)"
  • Verwendung von FormulaLocal für lokale Formeln:

    Range("A5").FormulaLocal = "=zählenwenn(B5:AB5;""WERT"")"
  • Dynamische Bereiche mit R1C1:

    Range("A5").FormulaR1C1 = "=CountIF(RC2:RC28,""WERT"")"

Diese Methoden erlauben es Dir, Excel-Formeln flexibel zu gestalten und anzupassen.


Praktische Beispiele

Hier sind einige praktische Beispiele, die Dir helfen, Formeln in Excel mit VBA zu erstellen:

  1. Einfacher Summen-Formel:

    Range("A1").Formula = "=SUMME(A2:A10)"
  2. Dynamisches Zählen von Werten:

    Dim letzteZeile As Long
    letzteZeile = Cells(Rows.Count, "B").End(xlUp).Row
    Range("A1").Formula = "=ZÄHLENWENN(B1:B" & letzteZeile & ";"WERT")"
  3. Erstellen einer komplexen Gleichung:

    Range("B1").Formula = "=A1 + A2 - A3 * A4"

Diese Beispiele zeigen, wie Du mit VBA Formeln erstellen kannst, die sich an unterschiedliche Daten anpassen.


Tipps für Profis

  • Verwende Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Nutze Debug.Print, um den Inhalt von Variablen während der Ausführung zu überprüfen und Probleme schneller zu identifizieren.
  • Baue Fehlerbehandlungsroutinen ein, um unerwartete Fehler elegant abzufangen.

FAQ: Häufige Fragen

1. Wie kann ich eine VBA-Formel dynamisch anpassen? Du kannst die Formel als String zusammenbauen und Variablen für die Zellreferenzen verwenden, z.B.:

Range("A5").Formula = "=SUMME(B" & ersteZeile & ":B" & letzteZeile & ")"

2. Was ist der Unterschied zwischen Formula und FormulaR1C1? Formula verwendet die A1-Notation, während FormulaR1C1 die R1C1-Notation verwendet, die auf relativen Positionen basiert. Diese kann nützlich sein, wenn sich die Formeln in Bezug auf andere Zellen anpassen müssen.

Diese Informationen sollten Dir helfen, Excel-Formeln mit VBA effektiv zu erstellen und anzupassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige