Ich möchte gern in einem Calc-Dokument per Makro einen Bereich kopieren und diesen an einer anderen Stelle einfügen. Da der kopierte Bereich Formel und Bezüge enthält, sollen im Zielgebiet nur die Werte ankommen.
Gibt es so etwas auch im OpenOffice. Die Befehle, die der Makrorekorder liefert, erscheinen mir etwas umständlich und es erfordert auch einen großen Aufwand, sie für alle Gelegenheiten anzupassen.
Hey @ all,
nicht geprüft, aber ich denke, da gibt es eine Lösung.
jede Zelle hat drei Eigenschaften (Text, value, formual) welche relativ unabhängig voneinander existieren können.
Man kann jede Zelle (Eigenschaft) auslesen und woanders einfügen.
Wenn man also die Inhalte (Werte) haben möchte, so liest man eben die "values" aus, das sind dann die Ergebnisse der Formeln. Und die kann ich woanders wieder einfügen.
Das mit dem Auslesen der Zelle ist mir bekannt. Diese Methode kann jedoch sehr aufwendig werden, wenn ich ganze Bereich kopieren will. Ich habe auch eine Lösung mit Hilfe des Makrorekorders gefunden. Nur benötigt diese Lösung eine Menge Programmzeilen und schaut nicht so elegant aus wie die Lösung von Microsoft. Einigermaßen hinnehmbar ist die Lösung nur dadurch, dass ich alles in ein Unterprogramm gepackt habe, dass ich dann einfach aufrufen muss.
Zu dem Thema Kopieren - Werte ohne Formel einfügen habe ich jetzt eine native Basic-Lösung gefunden. Meine Lösung hat allerdings den Nachteil, dass der Zielbereich genauso groß sein muss wie der Quellbereich. Die Angabe der ersten Zelle im Zielbereich genügt also nicht. Mein Code ist dafür aber wesentlich überschaubarer als der mit dem Makrorekorder.
sub EinfuegenDaten()
Doc = Thiscomponent
Tab = Doc.Sheets(1)
Quelle = Tab.getCellRangeByName("A1:B19")
Ziel = Tab.getCellRangeByName("C1:D19")
Daten = Quelle.DataArray
Ziel.DataArray = Daten
end sub