Makro - kopieren, einfügen und ersetzen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro - kopieren, einfügen und ersetzen

Re: Makro - kopieren, einfügen und ersetzen

von F3K Total » Mo, 12.11.2012 18:12

Hallo Sanguinius,
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.
Hier das Makro:

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
Viel Spaß damit
Gruß R

Nach oben