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

Forumthread: VBA: Formeln kopieren

VBA: Formeln kopieren
joerg
Hallo,
wie kann ich denn mit VBA Formeln so von einer Zelle in die andere kopieren, dass die Bezüge entsprechend angepasst werden? habe ActiveSheet.Range("A" & Target.Row & ":Z" & Target.Row + 1).FillDown und ActiveSheet.Rows(Target.Row + 1).Formula = Rows(Target.Row).Formula probiert, aber beides funktioniert ja leider nicht, also bzw. werden die Bezüge eben nicht angepasst...?
Danke,
Gruss,
Jo
Anzeige
ganz normal mit Copy und Paste?
08.02.2010 16:12:13
Björn
Hallo,
warum nicht über Copy und Paste?
Das ist dann nichts anderes wie Str+C und Strg+V.
Ansonsten ist es schwierig zu sagen, weil ich nicht weiß, wie Deine Formeln aussehen und was du mit "angepasst" meinst.
Gruß
Björn B.
Ja, das wäre dann DIE andere Möglichkeit! ;-) orT
08.02.2010 16:19:54
Luc:-?
Gruß Luc :-?
AW: ganz normal mit Copy und Paste?
08.02.2010 16:21:21
joerg
Hm, ist 'Bezüge werden nicht angepasst' denn nicht eindeutig formuliert? Also ich habe zB in Zelle A1 die Formel '=b1 / 2', die Formel möchte ich jetzt mit VBA in Zelle A2 kopieren, wobei... Ich weiss wirklich nicht, wie ich es anders nennen soll: Wobei die Bezüge angepasst werden, so dass in A2 dann als Formel '=b2 / 2' steht. So wie Strg-c/Strg-v, nur eben mit VBA. :)

Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Rows(Target.Row + 1).EntireRow.Insert
' ActiveSheet.Range("A" & Target.Row & ":Z" & Target.Row + 1).FillDown      'geht nicht...
' ActiveSheet.Rows(Target.Row + 1).Formula = Rows(Target.Row).Formula    'geht auch nicht... _
End Sub
Gruss,
Jo
Anzeige
Hä? Hab ich dich schon geschrieben...
08.02.2010 16:25:56
Björn
... hast Du meinen Vorschlag ausprobiert?
Warum kopierst du nicht einfach wenn du kopieren möchtest?
Gruß
Björn B.
AW: Hä? Hab ich dich schon geschrieben...
08.02.2010 16:32:46
joerg
Hi Björn, Wie Du doch an dem codeschnipsel siehst füge ich bei Doppelklick eine Zeile ein. Und jetzt würde ich gern die Formeln aus der Zeile, auf die ich geklickt habe, in die neue Zeile übernehmen. Ich könnte das natürlich auch so machen:

Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Rows(Target.Row + 1).EntireRow.Insert
msgbox "Bitte Formeln von Hand kopieren..."
End Sub
...aber automatisch wäre doch irgendwie netter. Oder verstehe ich Dich völlig falsch? Muss eigentlich fast...
gruss,
Jo
Anzeige
ja, tust du...
08.02.2010 16:38:22
Björn
... aber macht ja nix.
versuch es mal so...
Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Rows(Target.Row).Copy
Rows(Target.Row + 1).Insert Shift:=xlDown
End Sub
Das wäre dann wie "kopierte Zellen einfügen".
Du kannst auch wie bisher deine Zeile einfügen und dann die mit .Copy und .Paste die Formeln kopieren.
Du hast einfach etwas zu umständlich gedacht...
Gruß
Björn B.
Anzeige
noch was...
08.02.2010 16:33:43
Björn
Habe gerade noch mal getestet, das mit FillDown funktioniert bei mir.
Wie gesagt, ich vermute es liegt an Deiner Formel, aber die sehen wir ja nicht.
Funktioniert es, wenn du es von Hand machst? Also ohne VBA?
Gruß
Björn B.
AW: noch was...
08.02.2010 16:35:10
joerg
Ja, von Hand funktioniert...
Aber ich seh grad erst Deine Antwort an Luc, mir war nicht klar das 'copy' auch eine Funktion in VBA ist (Oder methode?)
Und wenn Du sagtst dass bei Dir filldown auch geht... dann probier ich mal noch ein bisschen, vielleicht hab ich was übersheen...
gruss,
Jo
Anzeige
Das ist auch klar, denn du überträgst ja...
08.02.2010 16:18:23
Luc:-?
...quasi nur einen Text — ...Formula ist Text! — aus einer Zelle in mehrere andere, Joerg,
was soll sich da anpassen...?! M.W. fkt das nur für Matrixformeln mit ...FormulaArray problemlos. Falls es nicht doch noch 'ne andere Möglichkeit, die mir jetzt nicht einfällt, gibt, wirst du das wohl über einen PgmZyklus („Schleife“) zwecks Adressanpassung mit der Laufvariablen realisieren müssen...
Gruß Luc :-?
Anzeige
reden wir jetzt völlig aneinander vorbei?
08.02.2010 16:23:32
Björn
Hallo Luc:-?
also mal auf ganz blöd.
Wenn ich in B1 die Formel =A1 stehen habe und folgdenden Code ausführe
activesheet.range("B1").copy activesheet.range("B2")

Dann steht in B2 =A2, und somit wurde der Bezug in der Formel angepasst.
Ich verstehe das Problem nicht. Man muss doch nur die Formel richtig schreiben (also an den richtigen Stellen die Dollarzeichen "$" setzen), dann kann man ganz normal kopieren.
Gruß
Björn B.
Anzeige
ok, hab deinen 2 Beitrag zu spät gesehen...
08.02.2010 16:24:15
Björn
hat sich also erledigt.
Ging mir genauso! War wohl fast gleichzeitig! orT
08.02.2010 16:51:34
Luc:-?
Mit ihren Vorgaben stellen die Frager oft auch die „Denkweichen“ des Antworters... ;-)
Gruß Luc :-?
Alles klar, mein Fehler...
08.02.2010 16:38:15
joerg
Björn hat recht, FillDown funktioniert - ich hatte vergessen das .formular = .formula dahinter wegzunehmen...
Danke, gruss,
Jo
Anzeige
Na, dann, viel Freud'...! ;-) Gruß owT
08.02.2010 16:52:59
Luc:-?
:-?
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Formeln mit VBA in Excel kopieren und Bezüge anpassen


Schritt-für-Schritt-Anleitung

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

  2. Modul hinzufügen: Klicke mit der rechten Maustaste auf VBAProject (DeineArbeitsmappe) und wähle Einfügen > Modul.

  3. Code eingeben: Füge den folgenden Code ein, um eine Zeile zu duplizieren und die Formeln zu kopieren, während die Bezüge angepasst werden:

    Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       Rows(Target.Row + 1).EntireRow.Insert
       Rows(Target.Row).Copy
       Rows(Target.Row + 1).PasteSpecial Paste:=xlPasteFormulas
       Application.CutCopyMode = False
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Doppelklicke auf eine Zeile, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • Fehler: Bezüge werden nicht angepasst.

    • Lösung: Stelle sicher, dass du PasteSpecial Paste:=xlPasteFormulas verwendest, um die Formeln zu kopieren.
  • Fehler: Makro funktioniert nicht bei bestimmten Formeln.

    • Lösung: Überprüfe, ob die Formeln in den Zellen korrekt sind. Manchmal kann ein Dollarzeichen $ in den Bezügen dazu führen, dass die Bezüge nicht angepasst werden.

Alternative Methoden

  • Copy und Paste: Eine einfache Möglichkeit, Formeln zu kopieren, ist die Verwendung der Clipboard-Funktionen in VBA. Verwende den folgenden Code:

    Sub CopyAndPasteFormulas()
       ActiveSheet.Range("A1").Copy Destination:=ActiveSheet.Range("A2")
    End Sub
  • Füllfunktion: Du kannst auch die FillDown-Methode verwenden, um Formeln zu kopieren und Bezüge automatisch anzupassen:

    Sub FillDownFormulas()
       ActiveSheet.Range("A1").FillDown
    End Sub

Praktische Beispiele

  • Einfaches Kopieren: Wenn du in Zelle A1 die Formel =B1/2 hast und diese in A2 kopieren möchtest, kannst du den genannten Code verwenden. A2 wird dann automatisch =B2/2 enthalten.

  • Mit einer Schleife: Wenn du mehrere Zeilen gleichzeitig kopieren möchtest, kannst du eine Schleife verwenden:

    Sub CopyMultipleRows()
       Dim i As Integer
       For i = 1 To 10
           Rows(i).Copy Destination:=Rows(i + 1)
       Next i
    End Sub

Tipps für Profis

  • Verwende Application.CutCopyMode: Setze Application.CutCopyMode = False, um die Auswahl nach dem Kopieren zu deaktivieren und das Clipboard zu leeren.

  • Formelüberprüfung: Überprüfe deine Formeln, bevor du sie kopierst. Achte darauf, dass keine absoluten Bezüge (mit $) verwendet werden, wenn du die Bezüge anpassen möchtest.

  • Fehlermeldungen vermeiden: Füge einen Fehlerbehandlungsmechanismus ein, um unerwartete Probleme zu diagnostizieren.


FAQ: Häufige Fragen

1. Wie kann ich Formeln in mehreren Zellen gleichzeitig kopieren?
Du kannst eine Schleife verwenden, um Formeln in mehreren Zellen zu kopieren und die Bezüge automatisch anzupassen.

2. Was ist der Unterschied zwischen .Copy und .PasteSpecial?
.Copy kopiert die gesamte Zelle, während .PasteSpecial dir die Möglichkeit gibt, spezifische Inhalte, wie nur Formeln, einzufügen.

3. Funktioniert dieser Code in jeder Excel-Version?
Ja, der bereitgestellte VBA-Code sollte in den meisten aktuellen Excel-Versionen funktionieren, einschließlich Excel 2016, 2019 und Microsoft 365.

4. Kann ich auch Formeln in andere Arbeitsblätter kopieren?
Ja, du kannst den Zielbereich auf ein anderes Arbeitsblatt verweisen, indem du den Arbeitsblattnamen in den Referenzen angibst.

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