Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1136to1140
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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
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.
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.
Anzeige
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
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.
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 :-?
Anzeige
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
Na, dann, viel Freud'...! ;-) Gruß owT
08.02.2010 16:52:59
Luc:-?
:-?

179 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige