Hallo Wolfgang,

[1] Mit "getCellRangeByPosition" funktioniert es nicht. Offensichtlich kann man einem CellRange nicht alle Werte eines zweiten CellRange 1:1 zuweisen, sondern eben nur einem CellRange einen einzelnen Wert. Meine ich mal ...

[2] Ich arbeite nur mit Indizes und nicht mit Adressen. Ist insbesondere bei Iterationen schön einfach. Und da ich keine UNO-Kommandos nutze, ist es auch nicht notwendig.

[3] oSheet.CopyRange zerschießt Zell-Verweise, wenn ich Dich mal zitieren darf: "[...] 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. [...]

[4] Diese kleine Schleife ist sicherlich kein Problem und man hat eine nachvollziehbare 1:1-Zuweisung.

[5] Am Anfang meiner Makro-Programmierung hatte ich auch nur mit UNO-Kommandos gearbeitet. Aber spätestens, wenn man z.B. Tabellen "invisible" bearbeiten will ( https://www.mail-archive.com/[email protected]/msg19072.html ), läuft man gegen die Wand. So habe ich die UNO-Kommandos aufgegeben und mir die Basic-Makro-Programmierung ohne UNO-Kommandos angeeignet, zumal man dazu eine Menge Informationen im WEB findet.

[6] Vielleicht gibt es für das Problem "Neue Zeile direkt unter Spaltenüberschrift-Zeile einfügen" auch noch elegantere Lösungen, mir ist eben diese eingefallen, zumal ich auch kein Makro-Spezialist mit langjähriger Erfahrung bin.

Gruß
Hans-Werner

------ Originalnachricht ------
Von: "Wolfgang Jäth" <[email protected]>
An: [email protected]
Gesendet: 28.07.2018 10:16:40
Betreff: Re: [de-users] Calc: Neue Zeile direkt unter Spaltenüberschrift-Zeile einfuegen

Am 27.07.2018 um 20:10 schrieb OoOHWHOoO:

Jetzt muss ich mir diene Code doch mal etwas anschauen. :-)

      For iCol=0 To iColMax Step 1

'       [0] Zell-Typ übernehmen:
         oSheet.getCellByPosition(iCol,iRowIns).NumberFormat  =
oSheet.getCellByPosition(iCol,iRowIns+1).NumberFormat

"getCellRangeByPosition"? Oder noch einfacher "getCellRangeByName, da
kann man als Parameter direkt z. B. "A1:Z1" o. ä. angeben? Würde
zumindest die Schleife eliminieren.

Und könnte man nicht mit oSheet.CopyRange was machen? Müsste man halt
irgendwie aufs Format begrenzen können (ich gehe davon aus, dass
CopyRange Format /und/ Inhalt kopiert). Aber da bist du wohl mehr
Fachman als ich (ehrlich gesagt ist /mein/ 'Spezialgebiet' eigentlich
die Zellenformeln; Makros mach ich nur, wenns gar nicht anders geht).

[2] Falls Du zu Deiner Tabelle noch weitere Spalten hinzufügst,
unbedingt "iColMax" anpassen !!!

Oder gleich von vorn herein groß genug ansetzen (werden halt leere
Zellen kopiert).

Wolfgang
--
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: [email protected]
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: [email protected]
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

Antwort per Email an