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

Forumthread: Formel per VBA in Zelle schreiben

Formel per VBA in Zelle schreiben
25.02.2007 22:58:03
Ralf-P
Hallo, ich war schon lange nicht mehr hier, brauche aber mal wieder eure Hilfe.
Folgendes Problem, in einem Schleifendurchlauf sollen auf einem sheet mehrere Formeln in verschiedene Zellen geschrieben werden
Formel = "='Tfz-Bereit'!" & Buchstabe & "46"
ActiveSheet.Range("D11").Value = Formel
ActiveSheet.Range("D11").Select
Set SourceRange = ActiveSheet.Range("D11")
Set fillRange = ActiveSheet.Range("D11:D25")
SourceRange.AutoFill Destination:=fillRange, Type:=xlFillDefault
Formel = "='Tfz-Bereit'!" & Buchstabe & "62"
ActiveSheet.Range("D26").Value = Formel
ActiveSheet.Range("D26").Select
Set SourceRange = ActiveSheet.Range("D26")
Set fillRange = ActiveSheet.Range("D26:D47")
SourceRange.AutoFill Destination:=fillRange, Type:=xlFillDefault
Formel = "=WENN(D11=0;0;('Tfz-Bereit'!$" & Buchstabe & "$7/D11)-SUMME(G12:$G$19))"
ActiveSheet.Range("G11").Value = Formel
ActiveSheet.Range("G11").Select
Set SourceRange = ActiveSheet.Range("G11")
Set fillRange = ActiveSheet.Range("G11:G19")
SourceRange.AutoFill Destination:=fillRange, Type:=xlFillDefault
Die beiden ersten Blöcke sind bis auf den Inhalt des Text-Strings in der Variable "Formel" identisch und funktionieren einwandfrei.
Beim dritten Block gibt es immer einen Laufzeitfehler, obwohl ja die Vorgehensweise immer die selbe ist.
Vielleicht fällt Euch ja auf, was an dem String falsch ist, sodass er nicht in die Zelle geschrieben wird.
Danke im vorraus
Ralf
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Formel per VBA in Zelle schreiben
25.02.2007 23:08:07
Jan
Hi,
kann mir nicht vorstellen, dass das klappt. Es muss so aussehen:
ActiveSheet.Range("G11").FormulaLocal = Formel
mfg Jan
AW: Formel per VBA in Zelle schreiben
25.02.2007 23:09:09
Josef
Hallo Ralph,
dafür gibt's ".FormulaLocal".
Das ganze "AutoFill" kannst du dir auch sparen.
Formel = "='Tfz-Bereit'!" & Buchstabe & "46"
ActiveSheet.Range("D11:D25").FormulaLocal = Formel

Formel = "='Tfz-Bereit'!" & Buchstabe & "62"
ActiveSheet.Range("D26:D47").FormulaLocal = Formel

Formel = "=WENN(D11=0;0;('Tfz-Bereit'!$" & Buchstabe & "$7/D11)-SUMME(G12:$G$19))"
ActiveSheet.Range("G11:G19").FormulaLocal = Formel

Gruß Sepp
Anzeige
AW: Formel per VBA in Zelle schreiben
25.02.2007 23:24:00
Ralf-P
Hallo Sepp,
erstmal Danke.
Werd's gleich morgen früh in der Firma testen.
Gruß Ralf
Danke, genau so !!! 0.T.
26.02.2007 08:57:36
Ralf-P
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA: Formel in Zelle schreiben


Schritt-für-Schritt-Anleitung

Um eine Formel per VBA in eine Zelle zu schreiben, kannst du die folgende Vorgehensweise nutzen. Diese Anleitung geht davon aus, dass du mit Excel VBA 2010 oder höher arbeitest.

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

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProjekt (DeineDatei.xlsx)" > Einfügen > Modul.

  3. Schreibe den folgenden Code:

    Sub FormelInZelleSchreiben()
       Dim Buchstabe As String
       Buchstabe = "A" ' Beispielbuchstabe
    
       ' Formel für die Zelle D11
       Dim Formel As String
       Formel = "='Tfz-Bereit'!" & Buchstabe & "46"
       ActiveSheet.Range("D11").FormulaLocal = Formel
    
       ' Formel für Zelle G11
       Formel = "=WENN(D11=0;0;('Tfz-Bereit'!$" & Buchstabe & "$7/D11)-SUMME(G12:$G$19))"
       ActiveSheet.Range("G11").FormulaLocal = Formel
    End Sub
  4. Führe das Makro aus: Schließe den VBA-Editor und kehre zu Excel zurück. Drücke ALT + F8, wähle FormelInZelleSchreiben aus und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Laufzeitfehler bei der Formel: Wenn du einen Laufzeitfehler erhältst, überprüfe den String, den du in die Zelle schreibst. Achte darauf, dass die Syntax korrekt ist. Statt .Value solltest du .FormulaLocal verwenden, um sicherzustellen, dass die Formel korrekt erkannt wird.

  • Formeln werden nicht automatisch ausgefüllt: Wenn du AutoFill verwendest, stelle sicher, dass der Zielbereich korrekt definiert ist. Anstelle von AutoFill kannst du direkt den Bereich mit .FormulaLocal befüllen, um Zeit zu sparen.


Alternative Methoden

Du kannst auch VBA-Funktionen verwenden, um Formeln in Zellen zu schreiben. Eine gängige Methode ist, eine Funktion zu definieren, die eine Formel mit Variablen erstellt:

Function FormelMitVariable(Buchstabe As String) As String
    FormelMitVariable = "='Tfz-Bereit'!" & Buchstabe & "46"
End Function

Diese Funktion kannst du dann in deinem Hauptmakro verwenden.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du mit VBA Formeln in Zellen schreiben kannst:

  1. Einfaches Beispiel:

    ActiveSheet.Range("A1").FormulaLocal = "=SUMME(B1:B10)"
  2. Mit Variablen:

    Dim Zeile As Integer
    Zeile = 1
    ActiveSheet.Range("A" & Zeile).FormulaLocal = "=D" & Zeile & "*E" & Zeile
  3. Formel per Schleife:

    Dim i As Integer
    For i = 1 To 10
       ActiveSheet.Range("A" & i).FormulaLocal = "=B" & i & "+C" & i
    Next i

Tipps für Profis

  • Verwende .FormulaLocal: Dies stellt sicher, dass die Formel in der lokalen Sprache eingegeben wird.
  • Debugging: Nutze Debug.Print oder MsgBox, um den Inhalt deiner Variablen während der Ausführung zu überprüfen.
  • Buchstaben dynamisch setzen: Du kannst den Buchstaben für die Zelle dynamisch bestimmen, indem du beispielsweise eine Schleife verwendest.

FAQ: Häufige Fragen

1. Wie kann ich eine Formel mit einer Variable in eine Zelle schreiben? Du kannst eine Variable definieren und diese in der Formel verwenden, wie im Schritt-für-Schritt-Beispiel gezeigt.

2. Gibt es eine Möglichkeit, mehrere Formeln gleichzeitig einzufügen? Ja, du kannst das Range-Objekt verwenden, um mehrere Zellen gleichzeitig zu befüllen, indem du die Formel auf den gesamten Bereich anwendest.

3. Was ist der Unterschied zwischen .Value und .FormulaLocal? .Value schreibt nur den Text in die Zelle, während .FormulaLocal sicherstellt, dass die Zelle als Formel interpretiert wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige