Formel nach Kopieren der Zellen per VBA anpassen

Bild

Betrifft: Formel nach Kopieren der Zellen per VBA anpassen
von: Mike
Geschrieben am: 07.08.2015 12:39:29

Hallo Zusammen,
ich habe eine Datei mit 3 Tabellen.
Tabelle Quelle fungiert quasi als 'Datenbank' und hat Formeln in den Spalten A:D.
Nun wird Block A:B in Tabelle A kopiert und Block C:D in Tabelle B.
Danach müssen die Formeln angepasst werden, da die Bezüge nicht mehr stimmen.
Ich habe eine Beispieltabelle angehangen.
Bisher erledige ich das per VBA (siehe Codebeispiel aus meinem Projekt). Hat den Nachteil, daß bei Formeländerungen der VBA-Code angepasst werden müßte.
Vielleicht hat jemand eine Idee.
[CODE


Private Sub SetFormeln_wsUploadSW(lStartzeile As Long, lEndzeile As Long)
'###########################################
' Bereich im Quellblatt 'DB' = [W:Z]
'###########################################
' W3 -> A3 "=B3"
' X3 -> B3 "=C3"
' Y3 -> C3 "=E3"
' Z3 -> D3 "=F3"
'###########################################
   With wsUploadSW
      ' Spalte A
      .Range("A" & lStartzeile).Formula = "=Angebot!B" & lStartzeile
      .Range("A" & lStartzeile & ":A" & lEndzeile).FillDown
      ' Spalte B
      .Range("B" & lStartzeile).Formula = "=Angebot!C" & lStartzeile
      .Range("B" & lStartzeile & ":B" & lEndzeile).FillDown
      ' Spalte C
      .Range("C" & lStartzeile).Formula = "=Angebot!E" & lStartzeile
      .Range("C" & lStartzeile & ":C" & lEndzeile).FillDown
      ' Spalte D
      .Range("D" & lStartzeile).Formula = "=Angebot!F" & lStartzeile
      .Range("D" & lStartzeile & ":D" & lEndzeile).FillDown
   End With
End Sub

[/CODE]
https://www.herber.de/bbs/user/99390.xlsx
Vielen Dank und Grüsse, Mike

Bild

Betrifft: AW: Formel nach Kopieren der Zellen per VBA anpassen
von: Herbert Grom
Geschrieben am: 07.08.2015 15:38:26
Hallo,
kannst Du mal eine Beispielmappe hochladen, die exakt Deinem Original entspricht, was Tab-Namen und Zellbereiche entspricht? Dann könnte ich Dir evtl. auch helfen.
Servus

Bild

Betrifft: AW: Formel nach Kopieren der Zellen per VBA anpassen
von: Mike
Geschrieben am: 07.08.2015 17:01:43
Hallo Herbert,
gerne... Die Tabelle DB ist das Quellblatt, wie im Code ersichtlich.
https://www.herber.de/bbs/user/99409.xlsm
Der Kopiervorgang wird über das Kontextmenü [Komponentenauswahl] gestartet.
VG, Mike

Bild

Betrifft: AW: Formel nach Kopieren der Zellen per VBA anpassen
von: Herbert Grom
Geschrieben am: 07.08.2015 18:11:51
Hallo Mike,
und welche der jetzt vorhandenen Tab entspricht den "A" + "B" aus der vorh. Mappe?
Servus
P.S.:Leider komme ich erst morgen früh wieder dazu mich damit zu beschäftigen. Ich hoffe das langt! ;o)=)

Bild

Betrifft: AW: Formel nach Kopieren der Zellen per VBA anpassen
von: Mike
Geschrieben am: 10.08.2015 09:09:16
Hallo Herbert,
danke für Deine Antwort.
Die Spalten A:AO der Tabelle 'DB' werden nach Auswahl eines Eintrages im Kontextmenü in die anderen Tabellen kopiert:
A:F in Tabelle 'Angebot'.
G:AB in Tabelle 'VEP-Kosten'.
AC:AF in Tabelle 'Upload SW'.
AG:AO in Tabelle 'SAP-Upload'.
Hoffe, das hilft Dir weiter.
Danke und Grüsse, Mike

Bild

Betrifft: AW: Formel nach Kopieren der Zellen per VBA anpassen
von: Herbert Grom
Geschrieben am: 10.08.2015 15:47:16
Hallo Mike,
Du machst es mir schon sehr schwer! Kannst Du mir denn nicht genau beschreiben, was Du willst?
Du schreibst: "werden nach Auswahl eines Eintrages im Kontextmenü in die anderen Tabellen kopiert:" Im KM befinden sich ja die Einträge "SM-A" und "SM-B". Warum aber jeweils 11 x ? Hier würde es doch reichen, wenn es jeweils einmal drin steht, oder nicht? Wenn nicht, dann sollten die doch jeweils anders heißen, da man im Code ja sonst kein Unterscheidungsmerkmal hat"
Und was soll passieren, wenn man "SM-A" und was, wenn man "SM-B" auswählt.
Servus

Bild

Betrifft: AW: Formel nach Kopieren der Zellen per VBA anpassen
von: Mike
Geschrieben am: 10.08.2015 15:59:28
Hallo Herbert,
bitte um Entschuldigung, denn beim Aufbereiten der Musterdatei ist mir da ein Fehler unterlaufen.
In der angehängten Datei passt nun alles und jeder Eintrag im Kontextmenü ist eindeutig!
https://www.herber.de/bbs/user/99471.xlsm
Wählt man einen Eintrag im Kontextmenü aus, wird in Tabelle die Spalte mit dem Kontexteintrag gesucht und der AutoFilter gesetzt.
Dann werden die sichtbaren Zeilen (inc.Überschrift) in die entsprechenden Tabellen kopiert und die
Formelbezüge in allen Tabellen (außer in 'DB') angepasst.
Ich hoffe, das hilft Dir weiter.
Vielen Dank nochmal und Grüsse, Mike.

Bild

Betrifft: AW: Formel nach Kopieren der Zellen per VBA anpassen
von: Herbert Grom
Geschrieben am: 10.08.2015 16:18:20
Hallo Mike,
Du schreibst: "Wählt man einen Eintrag im Kontextmenü aus, wird in Tabelle die Spalte mit dem Kontexteintrag gesucht und der AutoFilter gesetzt."
was meinst Du mit "wird in Tabelle die Spalte"? In "Tabelle"-was?
Servus

Bild

Betrifft: AW: Formel nach Kopieren der Zellen per VBA anpassen
von: Mike
Geschrieben am: 10.08.2015 16:21:19
Hi Herbert,
damit meine ich in Tabelle 'DB' den Bereich 'AP2:BK2'.
Wird der Kontexteintrag in diesem Bereich gefunden, wird der AutoFilter in der Fundspalte gesetzt.
Grüsse, Mike

Bild

Betrifft: AW: Formel nach Kopieren der Zellen per VBA anpassen
von: Herbert Grom
Geschrieben am: 10.08.2015 16:50:51
Hallo Mike,
wenn Du mir jetzt noch beschreibst, welche Formeln wo wie angepasst werden müssen, dann kann ich Dir evtl. helfen. Falls ich mich danach nicht mehr melde, habe ich es aufgegeben, dass Du mir Dein Problem verständlich schildern kannst. Also, wenn ich mich nicht mehr melden sollte, bitte keine weiteren Nachfragen mehr!
Servus

Bild

Betrifft: AW: Formel nach Kopieren der Zellen per VBA anpassen
von: Mike
Geschrieben am: 10.08.2015 17:10:34
Hi Herbert,
betrachte bitte die Formel '=((D3*0,9469)-Z3)/(D3*0,9469)' in Zelle 'DB!G3'.
Da bei Auswahl eines Kontextmenüeintrages die Spalten 'G:AB' der Quelltabelle 'DB' in das Blatt 'VEP-Kosten' (beginnend ab Spalte A) kopiert wird, stimmt natürlich der Zellbezug nicht mehr.
Die Formel iim Blatt 'VEP-Kosten' passe ich dann wie folgt an, da sich die Zelle D3 in der Ursprungsformel nun nicht mehr im selben Blatt befindet:
.Range("A" & lStartzeile).Formula = "=((Angebot!D" & lStartzeile & "*0.9469)-T" & lStartzeile & ")/(Angebot!D" & lStartzeile & "*0.94690)"
Danke und Grüsse, Mike

Bild

Betrifft: AW: Formel nach Kopieren der Zellen per VBA anpassen
von: Herbert Grom
Geschrieben am: 11.08.2015 08:43:53
Hallo Mike,
in der beigefügten Datei habe ich mal 3 Durchläufe gemacht. Schau sie Dir an und schreibe mir in die jeweils erste Zeile der eingefügten Daten, die Formel, die nach dem Kopiervorgang da stehen muss.
https://www.herber.de/bbs/user/99477.xlsm
Servus

Bild

Betrifft: AW: Formel nach Kopieren der Zellen per VBA anpassen
von: Mike
Geschrieben am: 11.08.2015 09:54:21
Hallo Herbert,
die 3 Durchläufe die Du mit meinem Code gemacht hast schreibt die Formeln doch bereits in die Zellen (gelber Hintergrund).
https://www.herber.de/bbs/user/99482.xlsm
Mein 'einziges' Problem besteht jedoch darin, daß ich die Formeln nach dem Kopiervorgang durch die 4 Subs 'SetFormeln_wsAngebot', 'SetFormeln_wsKosten', 'SetFormeln_wsUploadSW' und 'SetFormeln_wsUpload' quasi hartkodiert ändere.
Ändert sich in Tabelle 'DB' eine Formel, so muß diese auch in den o.g. Subs angepasst werden.
Ich möchte die Formelanpassung aber gern dynamisch erledigen lassen.
Danke und Grüsse, Mike

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Formel nach Kopieren der Zellen per VBA anpassen"