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
- [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.