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+unsubscribe@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
Context
- Re: [de-users] Calc: Neue Zeile direkt unter Spaltenüberschrift-Zeile einfuegen · OoOHWHOoO
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.