Date: prev next · Thread: first prev next last
2018 Archives by date, by thread · List index


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


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.