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

Formel per VBA kopieren und Formel beibehalten

Forumthread: Formel per VBA kopieren und Formel beibehalten

Formel per VBA kopieren und Formel beibehalten
14.03.2017 12:36:25
cH_rI_sI

Hallo liebe Experten,
ich hoffe, ihr könnt mir auch hierbei wieder helfen - ich möchte gerne eine Formel per VBA wohin kopieren, damit der Eintrag variabel bleibt (von Zeile abhängig):

WS2.Cells(tempZeile, 1).Formula = "=""" & WS3.Range("F6").Value & "-""&ROW()-8"
In der Zelle "F6" steht z.B. "16/11" - das Gesamtergebnis ist je Zeile unterschiedlich:
Zeile 5:
"16/11-5"
Zeile 6:
"16/11-6"
Wie kann ich eine Formel an das Ziel schreiben, damit sich je nach Zeilennummer der Eintrag automatisch ändert? Geht das überhaupt?
Besten Dank im Voraus für Eure Unterstützung!
Lg,
Chrisi

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel per VBA kopieren und Formel beibehalten
14.03.2017 12:44:24
Rudi Maintaire
Hallo,
ziemlich unverständlich.
WS2.Cells(tempZeile, 1).Formula = "=" & WS3.Range("F6").Value & "-ROW()"
????
Gruß
Rudi
???
14.03.2017 13:01:32
RPP63
Moin!
Ich schließe mich mal an.
Welches Ergebnis erwartest Du?
Gruß Ralf
AW: ???
14.03.2017 14:39:27
cH_rI_sI
Ich habe im Blatt WS3 / Zelle "F6" folgendens stehen: "17/11"
Dies möchte ich immer in die erste Spalte der temp-Zeilen des Blatt WS2 übertragen und fortlaufend Nummerieren damit das Ergebnis wie folgt aussieht: "17/11-1" (in der nächsten Zeile "17/11-2" usw.)
Nachdem die relevanten Zeilen erst ab Zeile 9 beginnen (vorher mehrere Kopfzeilen), habe ich an ROW() "-8" angehängt, damit die Nummerierung bei 1 beginnt.
Daher auch dieser Code:
WS2.Cells(tempZeile, 1).Formula = "=""" & WS3.Range("F6").Value & "-""&ROW()-8"
Das Ganze funktioniert auch, aber es werden halt nur Werte übertragen und keine Formel, damit sich das Ganze beim Ändern der Sortierung auch nachträglich ändern kann...
Ich hoffe die Anforderung ist nun besser verständlich...
Lg,
Chrisi
Anzeige
AW: ???
14.03.2017 19:16:36
Werner
Hallo Chrisi,
z.B. so:
WS2.Cells(tempZeile, 1).FormulaLocal = "=Tabelle3!F6&""-""&ZEILE()-8"
Gruß Werner
AW: ???
15.03.2017 08:48:13
cH_rI_sI
Hallo Werner,
besten Dank für deinen Vorschlag - als Ergebnis bekomme ich trotzdem nur den Wert und nicht die Formel - somit ändert sich der Wert nachträglich nicht, wenn sich die Sortierung ändert...
An was kann das liegen?
Lg
Anzeige
AW: ???
15.03.2017 09:35:05
Werner
Hallo Chrisi,
die Codezeile schreibt eine Formel in eine Zelle. Hast du noch irgendwelche andere Makros am Laufen, die Formelwerte durch feste Werte ersetzen?
Gruß Werner
AW: ???
15.03.2017 10:30:23
cH_rI_sI
Hallo Werner,
Du hattest wie immer recht - da war so ein Code vorhanden - sorry, dass ich das übersehen habe!
Und nochmal vielen Dank für deine Bemühungen!!!
Lg,
Chrisi
Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
15.03.2017 11:06:51
Werner

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Formel per VBA kopieren und Bezug beibehalten


Schritt-für-Schritt-Anleitung

Um eine Formel per VBA zu kopieren und den Bezug beizubehalten, kannst du den folgenden VBA-Code verwenden. Dieser Code kopiert die Formel aus einer Zelle und sorgt dafür, dass sich die Formel an die Zeilennummer anpasst.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

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

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Dim tempZeile As Long
    tempZeile = 9 ' Beispielwert, ändere dies nach Bedarf
    
    WS2.Cells(tempZeile, 1).Formula = "=" & WS3.Range("F6").Value & "-ROW()+8"
  4. Passe den Wert von tempZeile an, um die gewünschte Zeile zu bestimmen.

  5. Schließe den VBA-Editor und führe das Makro aus.

Dieser Code sorgt dafür, dass die Formel in der gewünschten Zelle eingetragen wird und sich entsprechend der Zeilennummer anpasst.


Häufige Fehler und Lösungen

  • Problem: Die Formel wird als Wert und nicht als Formel eingegeben.

    • Lösung: Überprüfe, ob andere Makros vorhanden sind, die die Formeln durch feste Werte ersetzen.
  • Problem: Der Bezug zur Zelle wird nicht korrekt beibehalten.

    • Lösung: Stelle sicher, dass du die korrekte Syntax für das Kopieren der Formel verwendest. Beispielsweise kann FormulaLocal anstelle von Formula verwendet werden, wenn du lokale Formeln einfügen möchtest.

Alternative Methoden

Falls du keine VBA-Makros verwenden möchtest, kannst du auch die folgenden Methoden ausprobieren:

  1. Formel manuell kopieren:

    • Kopiere die Zelle mit der Formel.
    • Verwende "Inhalte einfügen" und wähle "Formeln", um nur die Formeln zu übernehmen.
  2. Formel mit Zellbezug beibehalten:

    • Nutze relative Zellbezüge in der Formel, um sicherzustellen, dass sich die Formeln anpassen, wenn du sie in andere Zellen kopierst.

Praktische Beispiele

Hier sind einige Beispiele, wie du die VBA-Formel anpassen kannst:

  1. Einfaches Beispiel:

    WS2.Cells(tempZeile, 1).Formula = "=A1+10"
  2. Formel mit Bezug:

    WS2.Cells(tempZeile, 1).Formula = "=" & WS3.Range("F6").Address & "-ROW()+8"

Diese Beispiele zeigen, wie du unterschiedliche Formeln in einer Zelle einfügen kannst, während du den Bezug beibehältst.


Tipps für Profis

  • Nutze FormulaLocal, wenn du mit Formeln in einer Sprache arbeitest, die von der Systemsprache abweicht.
  • Achte darauf, dass die Zielzelle nicht durch andere Formeln oder Formatierungen beeinträchtigt wird.
  • Dokumentiere deine VBA-Codes, um sie später leichter anpassen zu können.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Formel immer aktuell bleibt?
Stelle sicher, dass keine anderen Makros oder Funktionen die Zellen überschreiben, die du mit Formeln befüllen möchtest.

2. Kann ich auch mehrere Formeln gleichzeitig kopieren?
Ja, du kannst eine Schleife verwenden, um mehrere Formeln in einem Rutsch zu kopieren. Beispiel:

For i = 1 To 10
    WS2.Cells(i + 8, 1).Formula = "=" & WS3.Range("F6").Value & "-ROW()+8"
Next i

Mit diesen Anleitungen und Tipps bist du nun in der Lage, deine Excel-Formeln per VBA effizient zu kopieren, während du die Zellbezüge beibehältst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige