anbei ein Beispiel, was eigentlich alles tut, was du beschrieben hast.
Du musst es natürlich für Deine Bedürfnisse anpassen.
Ich habe als erste nachfolgende Tabelle die Tabelle "Montag" gewählt. Alle Formeln auf Tabelle1 beziehen sich also auf "Montag"
Das Makro arbeitet wie folgt:
- Es wird eine Leezeile unterhalb der ersten Zeile eingefügt
- Die letzte benutzte Spalte wird ermittelt
- Die Zeile 1 wird in die Leerzeile kopiert -> Es entstehen Formeln die falsch sind
- Die Formeln der Zeile 1 werden in die neue Zeile kopiert, dabei wird der Tabellenname, hier Montag, durch den Namen der mittels Inputbox abgefragt wird ersetzt.
Code: Alles auswählen
Sub Copy_Row1
dim aDestination as new com.sun.star.table.CellAddress 'Einzelne Zelle oben links
osheet = thiscomponent.sheets(0)
osheet.Rows.insertByIndex(1,1)'Leerzeile einfügen
ocursor = osheet.createcursor
ocursor.gotoendofusedarea(false)
orangeaddress = ocursor.rangeaddress
nEndcolumn = orangeaddress.EndColumn'letzte benutzte Spalte ermitteln
oSrange = osheet.getcellrangebyposition(0,0,nEndcolumn,0)'Quellzellenbereich auslesen (erste Zeile, Index 0)
aSAddress = oSrange.RangeAddress 'Bereichsadresse des Quellzellenbereiches auslesen
with aDestination 'Zielzelle festlegen (ab hier wird der zu kopierende Bereich eingefügt)
.Sheet = aSAddress.Sheet
.Column = 0
.Row = 1 'zweite Zeile
end with
osheet.copyRange(aDestination,aSAddress)'kopieren, Zeile 1 in Zeile 2
sTable = inputbox("Bitte neue Tabelle eingeben","Auswahl",)'Namen der neuen Tabelle eingeben
for i = 0 to nEndcolumn ' Formeln ersetzen
oSCell = osheet.getcellbyposition(i,0)'Zeile 1
sSFormula = oSCell.formula
oDCell = osheet.getcellbyposition(i,1)'Zeile 2
oDCell.Formula = Replace(sSFormula,"Montag",sTable)' in der Formel (sSFormula) "Montag" durch "sTable" (gerade in Inputbox eingegeben) ersetzen und in die Zellen der Zeile 2 schreiben
next
End Sub
Gruß R