Wen es interessiert:

Der Vollständigkeit halber anbei das Makro zu Andreas' Problemstellung, welches er nun verwendet.

Mich persönlich würde interessieren, ob es da auch noch einen einfacheren und/oder eleganteren Lösungsansatz gibt.

Grüße
Hans-Werner :-))


  Sub InsertRowByMovingRange
' Bei dem normalen Einfügen einer neuen Zeile in einer Tabelle hat diese ' Zeile immer die (Format-) Eigenschaften der vorherigen Zeile, was zu ' Problemen führen kann, wenn man direkt nach der Überschriftszeile eine ' Leerzeile einfügen will, welche die (Format-) Eigenschaften der folgenden ' Datenzeilen haben soll. Das Makro fügt nach der Überschriftszeile eine ' Leerzeile ein, wobei diese die (Format-) Eigenschaften der folgenden
'    Datenzeilen hat. Zellverweise in den Datenzeilen bleiben erhalten.
' [0] Das Tabellenblatt bestehe aus einer Überschriftszeile und beliebig
'        vielen nachfolgenden Datenzeilen.
' [1] Der Bereich der Datenzeilen wird um 1 Zeile nach unten verschoben, ' so dass zwischen Überschriftszeile und Datenzeilen eine Leerzeile
'        entsteht.
' [2] Der Inhalt der ersten Datenzeile wird in diese Leerzeile kopiert.
'    [3] Bestimmte Zellinhalte
'        + nummerischer Wert
'        + Datum/Uhrzeit
'        + Text
'        + Funktionen (beispielsweise Zellverweis)
' werden gelöscht - kann angepasst werden (s.u.). Alles andere bleibt
'        erhalten.
' +-----------------------------------------+--------------------+------+ ' | Konstante | Inhalt | Zahl | ' +-----------------------------------------+--------------------+------+ ' | com.sun.star.sheet.CellFlags.VALUE | nummerischer Wert | 1 | ' | com.sun.star.sheet.CellFlags.DATETIME | Datum/Uhrzeit | 2 | ' | com.sun.star.sheet.CellFlags.STRING | Text | 4 | ' | com.sun.star.sheet.CellFlags.ANNOTATION | Notizen | 8 | ' | com.sun.star.sheet.CellFlags.FOMULA | Funktionen | 16 | ' | com.sun.star.sheet.CellFlags.HARDATTR | Harte Formatierung | 32 | ' | com.sun.star.sheet.CellFlags.STYLES | Formatvorlagen | 64 | ' | com.sun.star.sheet.CellFlags.OBJECTS | Zeichenobjekte | 128 | ' +-----------------------------------------+--------------------+------+
     Dim oCellRange          as Object
     Dim oCursor             as Object
     Dim oDocument           as Object
     Dim oSheet              as Object
     Dim oSourceRange        as Object
     Dim oSourceRangeAddress as Object
     Dim oTargetCell         as Object
     Dim oTargetCellAddress  as Object
     Dim Xmax                as Long
     Dim Ymax                as Long
'    [0] VORARBEITEN
'    Tabellenblatt initialisieren:
     oDocument = ThisComponent
     oSheet    = oDocument.Sheets(0)
'    Tabellenblattgröße bestimmen:
     oCursor = oSheet.createCursor
     oCursor.GotoEndOfUSedArea(False)
     Xmax = oCursor.getRangeAddress().endColumn
     Ymax = oCursor.getRangeAddress().endRow
'    [1] ZELLBEREICH VERSCHIEBEN
'    Quellbereich zum Verschieben festlegen:
     oSourceRange        = oSheet.getCellRangeByPosition(0,1,Xmax,Ymax)
     oSourceRangeAddress = oSourceRange.getRangeAddress
' Zielzelle (linke obere Ecke des Zielbereichs) zum Verschieben festlegen:
     oTargetCell         = oSheet.getCellByPosition(0,2)
     oTargetCellAddress  = oTargetCell.getCellAddress
'    Verschieben:
     oSheet.moveRange(oTargetCellAddress,oSourceRangeAddress)
'    [2] ZELLBEREICH KOPIEREN
'    Quellbereich zum Kopieren festlegen:
     oSourceRange        = oSheet.getCellRangeByPosition(0,2,Xmax,2)
     oSourceRangeAddress = oSourceRange.getRangeAddress
' Zielzelle (linke obere Ecke des Zielbereichs) zum Kopieren festlegen:
     oTargetCell         = oSheet.getCellByPosition(0,1)
     oTargetCellAddress  = oTargetCell.getCellAddress
'    Kopieren:
     oSheet.copyRange(oTargetCellAddress,oSourceRangeAddress)
'    [3] INHALTE LÖSCHEN
'    Bereich zum Inhalte löschen festlegen:
     oCellRange = oSheet.getCellRangeByPosition(0,1,Xmax,1)
'    Inhalte löschen (Kann angepasst werden, siehe Tabelle oben !):
     oCellRange.clearContents(1+2+4+16)
  End Sub
--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Antwort per Email an