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


Hallo Andreas,

ein letzter Vorschlag - mir fällt sonst nichts weiter ein ...

Das Makro (s.u.) erzeugt aus diesem


A    B    C     (Überschriftszeile)
1    2    3     (Datenzeile 1)
4    5    6     (Datenzeile 2)
7    8    9     (Datenzeile 3)

das:

A    B    C     (Überschriftszeile)
                  (neue leere Zeile mit Zellformaten der Datenzeile 1)
1    2    3     (Datenzeile 1)
4    5    6     (Datenzeile 2)
7    8    9     (Datenzeile 3)

Das Makro (s.u.)

[1] fügt nach der 2. Zeile eine Zeile ein.
[2] kopiert die Inhalte der 2. Zeile in die neu eingefügte Zeile.
[3] löscht die Inhalte der 2. Zeile.
[4] positioniert den Cursor auf die 1. Spalte der 2. Zeile.

Einen einfachen COPY-Befehl für Zeilen gibt es offensichtlich nicht in Makro Basic ( http://www.dannenhoefer.de "7.4.5 Wie kann man Zeilen oder Spalten kopieren ?" ).

Die Anzahl der Spalten (1. Spalte = Index 0)kannst Du gegebenenfalls noch anpassen: SourceColMax = ?

Was alles gelöscht werden soll kannst Du gegebenenfalls noch erweitern: oCell.clearContents(1+2+4+?)

Gruß
Hans-Werner :-))

  Sub InsertRow

     Dim oCell              as Object
     Dim oCursor            as Object
     Dim oCursorCell        as Object
     Dim oDocument          as Object
     Dim oRow               as Object
     Dim oSheet             as Object
     Dim oSourceAdress      as Object
     Dim oSourceRange       as Object
     Dim oSourceRangeAdress as Object
     Dim oTargetAdress      as Object
     Dim oTargetCell        as Object
     Dim SourceCol          as Long
     Dim SourceColMax       as Long
     Dim SourceRow          as Long
     Dim TargetRow          as Long

'    KONSTANTE                               | ZELL-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

     oDocument  = ThisComponent
     oSheet     = oDocument.Sheets(0)
     oCursor    = oDocument.CurrentController

     SourceRow    = 1 ' Zeile  "2" (Index = Y = 1)
     TargetRow    = 2 ' Zeile  "3" (Index = Y = 2)
     SourceColMax = 2 ' Spalte "C" (Index = X = 2)

'    Eine neue Zeile ("TargetRow") nach der "SourceRow" einfügen
     oRow=oSheet.getRows
     oRow.insertByIndex(TargetRow,1)

'    Inhalt der "SourceRow" in die neue Zeile ("TargetRow") kopieren:
oSourceRange = oSheet.getCellRangeByPosition(0,SourceRow,SourceColMax,SourceRow)
     oSourceRangeAdress  = oSourceRange.getRangeAddress
     oTargetCell         = oSheet.getCellByPosition(0,TargetRow)
     oTargetAdress       = oTargetCell.getCellAddress
     oSheet.copyRange(oTargetAdress,oSourceRangeAdress)

'    Inhalte der "SourceRow" löschen:
     For SourceCol=0 To SourceColMax Step 1
         oCell = oSheet.getCellByPosition(SourceCol,SourceRow)
oCell.clearContents(1+2+4) ' Gegebenenfalls durch weitere "Lösch"-Zahl erweitern !
     Next SourceCol

'    Cursor in Spalte "A" der "SourceRow" positionieren:
     oCursorCell = oSheet.getCellByPosition(0,SourceRow)
     oCursor.Select(oCursorCell)

  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.