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