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


Hallo Wolfgang und Andreas ...

[1] Stimmt, Zell-Verweise werden "zerschossen". Danke für den Hinweis.

[2] Die "dannenhoefer"-Aussage bezieht auf BasicMakro-Programmierung ohne "uno"-Kommandos.

[3] Makro-Aufzeichnung machte ich auch, aber als Lösung verworfen wegen der "uno"-Kommandos.

[4] So sollte es gehen:

Sub InsertRow

   Dim oDoc as Object ' object Document
   Dim oSheet as Object ' object Sheet
   Dim oRow as Object ' object Row
   Dim iCol as Long ' index Column (i=0 => 1st Column)
   Dim iColMax as Long ' index Column Maximum
   Dim NF as Long ' Number Format
   Dim iRowIns as Long ' index Row Insert (i=0 => 1st Row )

   oDoc = ThisComponent
   oSheet = oDoc.Sheets(0)
   oRow = oSheet.getRows

   iRowIns = 1
iColMax = 3 ' Muss gegebenenfalls angepasst werden ((i=0 => 1st Column)) !

   oRow.insertByIndex(iRowIns,1) ' Zeile einfügen

   For iCol=0 To iColMax Step 1
NF = oSheet.getCellByPosition(iCol,iRowIns+1).NumberFormat ' Zell-Format lesen oSheet.getCellByPosition(iCol,iRowIns).NumberFormat = NF ' Zell-Format schreiben
   Next iCol

End Sub

Aus

Datum   Zeile   Text    Link
02.07.2018      02,000  TextZeile2 =C6
03.07.2018      03,000  TextZeile3 =C5
04.07.2018      04,000  TextZeile4 =C4
05.07.2018      05,000  TextZeile5 =C3
06.07.2018      06,000  TextZeile6 =C2

wird

Datum   Zeile   Text    Link

02.07.2018      02,000  TextZeile2 =C7
03.07.2018      03,000  TextZeile3 =C6
04.07.2018      04,000  TextZeile4 =C5
05.07.2018      05,000  TextZeile5 =C4
06.07.2018      06,000  TextZeile6 =C3

Die Zell-Formate für die eingefügte Zeile werden von der nachfolgenden Zeile kopiert.

Gruß
Hans-Werner :-))


------ Originalnachricht ------
Von: "Wolfgang Jäth" <jawo.ml.hamster@arcor.de>
An: users@de.libreoffice.org
Gesendet: 27.07.2018 12:52:41
Betreff: Re: [de-users] Calc: Neue Zeile direkt unter Spaltenüberschrift-Zeile einfuegen

Am 27.07.2018 um 10:59 schrieb OoOHWHOoO:
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.

Vorsicht; wenn in der 2. Zeile Verweise auf andere Zeilen (z.b. auf die
ursprüngliche Zeile 3, jetzt Zeile 4; passiert so aber auch mit jeder
beliebigen andern Zeile) stehen sollten, fällst du damit auf die
Schnauze. Denn du kopierst den jetzigen Link von z. B. 2 auf 4 nach 3,
von wo aus er natürlich ebenfalls 1 Zeile weiter als ursprünglich
gedacht (d. h. also nach 5 statt 4) verweist, usw.

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 ?" ).

Jein; man kann ihn einfach aufzeichnen. Zur Demonstration füll mal ein
leeres Blatt mit folgenden Werten (A1-E8):

Zeile   Buchstabe       Buchstabe       Text    Link
2       A       f       Anton   =D3
3       B       h       Berta   =D4
4       C       i       Charlotte       =D5
5       D       j       Annette =D6
6       E       k       Anna    =D7
                        Doris   

Als Makro schreibst du (das ist ein bisschen aufgepimpft, aber im
Prinzip nix anderes als "Extras => Makros => Aufzeichnen => <Markieren
des Bereichs A1:ZZ1> => Kopieren => <Rechtsklick auf Zeilenkopf von
Zeile 2> => Zeilen einfügen => <Rechtsklick auf Zeilenkopf von Zeile 2>
=> Inhalte Einfügen => <alles aus bis auf [X] Zahlen, [X] Formeln, [X]
Formate>"; unglücklicherweise zeichnen Makros nicht Plain Basic auf,
sondern UNO-Funktionen, und die sind leider nirgends vernünftig
dokumentiert; kann man also de Fakto nur per Makro-Aufzeichnen verwenden):

sub CopyXXX
rem ========

rem define variables
dim document   as object
dim dispatcher as object
rem --------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem --------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$5:ZZ5"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem --------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem --------------------------------------------------------------------
args1(0).Name = "ToPoint"
args1(0).Value = "$A$2"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem --------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertRows", "", 0, Array())

rem --------------------------------------------------------------------
dim args4(5) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "VFT"
args4(1).Name = "FormulaCommand"
args4(1).Value = 0
args4(2).Name = "SkipEmptyCells"
args4(2).Value = false
args4(3).Name = "Transpose"
args4(3).Value = false
args4(4).Name = "AsLink"
args4(4).Value = false
args4(5).Name = "MoveMode"
args4(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())

end sub
rem ====


Btw, das "VFT" im letzten Arrray stellt die Flags dar, die bestimmen,
was genau kopiert werden soll:

V = Value
F = Formula
T = Format

D. h. das "V" müsste für den echten Einsatz dann vermutlich raus. Was
die entsprechenden Parameter für andere Optionen wie z. B. Datum o. ä.
wären, müsstest du per Makro-Aufzeichnen ausprobieren.

Und statt A5:ZZ5 suchst du dir die Zeile bzw. den Bereich deines größten
Vertrauens [tm].

Wolfgang, UNO hassend (weil da nix, aber auch wirklich nix *vernünftig*
dokumentiert ist. Paradoxerweise /sind/ die einzelnen Methoden und
Parameter usw. ja durchaus dokumentiert, aber um diese Dokus zu
/finden/, musst du /vorher/ schon genau /wissen/, wie der Befehl und
seine übergeordneten Objekte (und deren übergeordneten Objekte usw.)
heißen, welche Parameter er hat (d. h. welche Parameterkombination du
verwenden möchtest), usw.; nur, wenn du das /eh/ schon alles weißt,
brauchst du auch keine Dokumentation mehr; völlig bescheuert :-((( )
--
Durch Donald Trump ist mir endgültig klar geworden: Es ist
nicht der Turm von Pisa, der schief steht, es ist die Welt!


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


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