[Erledigt]CALC: Zeilen kopieren
Moderator: Moderatoren
[Erledigt]CALC: Zeilen kopieren
Ich habe mehrere Zeilen mit Zellen speziell formatiert und möchte diese mit einem Makro in der gleichen Tabelle kopieren.
Wenn ich nur die Zellen kopiere verliere ich die Formatierungen.
Kann mir da jemand helfen?
Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst
Wenn ich nur die Zellen kopiere verliere ich die Formatierungen.
Kann mir da jemand helfen?
Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst
Zuletzt geändert von bredfeld am So, 10.06.2012 12:23, insgesamt 1-mal geändert.
Re: Zeilen mit Makro kopieren
Hallo
Hier kann ich problemlos mit strg+c kopieren und mit strg+v woanders mit Formaten einfügen.
mit strg+shift+v bekomme ich Auswahlmöglichkeiten angeboten was, wie usw. eingefügt wird.
Was funktioniert bei dir nicht?
Karo
Hier kann ich problemlos mit strg+c kopieren und mit strg+v woanders mit Formaten einfügen.
mit strg+shift+v bekomme ich Auswahlmöglichkeiten angeboten was, wie usw. eingefügt wird.
Was funktioniert bei dir nicht?
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Zeilen mit Makro kopieren
Wie gesagt, ich möchte dass aus einem Makro heraus automatisieren.
Ein Teil in meinem code kopiert schon 7 Zellen in eine bestimmte Stelle der Tabelle.
Der andere Teil den ich schreiben will soll aber Zeilen kopieren die speziell formatiert sind als Vorbereitung für weitere Eingaben.
Ich löse dann das alles aus mit einem Doppelklick.
Ein Teil in meinem code kopiert schon 7 Zellen in eine bestimmte Stelle der Tabelle.
Der andere Teil den ich schreiben will soll aber Zeilen kopieren die speziell formatiert sind als Vorbereitung für weitere Eingaben.
Ich löse dann das alles aus mit einem Doppelklick.
Re: Zeilen mit Makro kopieren
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Zeilen mit Makro kopieren
Ja so etwas, aber genau das habe ich probiert.
Das arbeitet mit 2 Tabellen und ich habe es für eine Tabelle umgeschrieben. Nur habe ich da das Problem dass mir meine speziellen Formatierungen nicht mitgenommen werden. Wie z.B. unterschiedliche Zeilenhöhe.
Das arbeitet mit 2 Tabellen und ich habe es für eine Tabelle umgeschrieben. Nur habe ich da das Problem dass mir meine speziellen Formatierungen nicht mitgenommen werden. Wie z.B. unterschiedliche Zeilenhöhe.
Re: Zeilen mit Makro kopieren
Hallo
Na sowas, z.B.
Karo
Na sowas, z.B.
Code: Alles auswählen
...
with sourcerange
for i = 0 to .Rows.Count()-1
targetrange.Rows( i ).Height = .Rows( i ).Height
next
end with
...
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
-
- ****
- Beiträge: 159
- Registriert: So, 17.10.2010 16:54
Re: CALC: Zeilen kopieren
Hallo,
viele Grüße
Axel
Karolus hat geschrieben:http://www.dannenhoefer.de/faqstarbasic ... l#Zweig197
Das Dannenhöfer-Beispiel kopiert sehr wohl Formatierungen mit. Es kann allerdings natürlich nicht mehr, als Calc beim Kopieren auch macht. Und Zeilenhöhen werden nur dann mitkopiert, wenn die ganze Zeile kopiert wird. Wenn Du also, wie Du im Betreff schreibst, *Zeilen* kopieren willst, dann so:bredfeld hat geschrieben:Ja so etwas, aber genau das habe ich probiert.
Das arbeitet mit 2 Tabellen und ich habe es für eine Tabelle umgeschrieben. Nur habe ich da das Problem dass mir meine speziellen Formatierungen nicht mitgenommen werden. Wie z.B. unterschiedliche Zeilenhöhe.
Code: Alles auswählen
oDocument = ThisComponent
oSheet1 = oDocument.Sheets.getByIndex(0)
oSheet2 = oDocument.Sheets.getByIndex(1)
' Quellzeile festlegen
oQuelleRange=oSheet1.Rows.getByIndex(2) 'Zeile 3 in oSheet1
oQuellRangeAddresse = oQuelleRange.getRangeAddress
' Zielzelle festlegen (muss in Spalte 0 sein)
oZiel = oSheet2.getCellByPosition(0,4) 'Zelle A5 in oSheet2
oZielCellAdresse=oZiel.getCellAddress()
oSheet2.copyRange(oZielCellAdresse,oQuellRangeAddresse) 'Kopiert Zeile 3 aus Sheet1 in Zeile 5 von Sheet2
Axel
Re: CALC: Zeilen kopieren
Ich zeige Ihnen mal meinen ganzen Code. Ich habe jetzt auch umgestellt auf zwei Tabellen um mehr Sicherheit für den Gebrauch zu bekommen.
Können Sie mir bei dem einfügen ihrer Lösung in den Teil Unfertig helfen ?
Können Sie mir bei dem einfügen ihrer Lösung in den Teil Unfertig helfen ?
Code: Alles auswählen
REM ***** BASIC *****
' Umgestellt auf zwei Tabellen wegen der
' dynamischen Kopie einer Tabellenerweiterung
Sub Move_cells_to_row_4_copy_paste_cells
Dim oDoc
Dim oCelle
Dim oSheet
Dim oSheet1
Dim oSheet2
Dim oRow
Dim oColumn
Dim oRangeAddress
rem get access to the document
oDoc = thisComponent
' aktive Zelle
oCelle = oDoc.getCurrentSelection().getCellAddress()
' aktives Tabellenblatt
oSheet = oDoc.sheets(oCelle.Sheet)
' aktuelle Zeile, Index
oRow = oCelle.Row
' aktuelle Spalte, Index
' Gültige Zeile für move überprüfen
if oRow mod 7 - 2 <> 1 then
'msgbox orow
exit sub
end if
' aktuelle Spalte, Index
oColumn = oCelle.column
'msgbox "Spalte "+oColumn
if oColumn = 0 then
spalte = "A4:A10"
zeilen = "A"+(oRow+8)+":A"+(oRow+14)
end if
if oColumn = 1 then
spalte = "B4:B10"
zeilen = "B"+(oRow+8)+":B"+(oRow+14)
end if
if oColumn = 2 then
spalte = "C4:C10"
zeilen = "C"+(oRow+8)+":C"+(oRow+14)
end if
if oColumn = 3 then
spalte = "D4:D10"
zeilen = "D"+(oRow+8)+":D"+(oRow+14)
end if
if oColumn = 4 then
spalte = "E4:E10"
zeilen = "E"+(oRow+8)+":E"+(oRow+14)
end if
if oColumn = 5 then
spalte = "F4:F10"
zeilen = "F"+(oRow+8)+":F"+(oRow+14)
end if
' unfertig !! Zellbereiche werden kopiert und an das Ende gestellt
' Kopie von Tabelle2 klappt nur [b]ohne richtige Zellhöhe[/b] die Positionen
' noch variabel machen und auf Ende prüfen !
oSheet1 = oDoc.Sheets.getByIndex(0)
oSheet2 = oDoc.Sheets.getByIndex(1)
oQuelleRange = oSheet2.getCellRangeByPosition(0,0,5,6)
oQuellRangeAddresse = oQuelleRange.getRangeAddress
oZiel = oSheet1.getCellByPosition(0,38)
oZielCellAddresse = oZiel.getCellAddress
oSheet1.copyRange(oZielCellAddresse,oQuellRangeAddresse)
'ende von unfertig !!
'Platz machen
oRangeAddress = oSheet.getCellRangeByName(spalte).getRangeAddress()
oSheet.insertCells(oRangeAddress, com.sun.star.sheet.CellInsertMode.DOWN)
'Zellen mitnehmen
oRangeAddress = oSheet.getCellRangeByName(zeilen).getRangeAddress()
oCellAddress = oSheet.getCellByPosition(oColumn, 3).getCellAddress
oSheet.moveRange(oCellAddress, oRangeAddress)
oSheet.removeRange(oRangeAddress, com.sun.star.sheet.CellDeleteMode.UP)
End Sub
Re: CALC: Zeilen kopieren
Vielen Dank für eure Hilfe:
Ich habe die Lösung von Axel Richter genommen.
Eine Schleife gebaut und mir 7 Zeilen komplett kopiert genau so wie ich es haben wollte.
Ich bin immer noch am lernen und freue mich immer wenn in diesem Forum auch Anfängern
kurze knappe Lösungen presentiert werden.
Ich habe die Lösung von Axel Richter genommen.
Eine Schleife gebaut und mir 7 Zeilen komplett kopiert genau so wie ich es haben wollte.
Ich bin immer noch am lernen und freue mich immer wenn in diesem Forum auch Anfängern
kurze knappe Lösungen presentiert werden.
-
- ****
- Beiträge: 159
- Registriert: So, 17.10.2010 16:54
Re: [Erledigt]CALC: Zeilen kopieren
Hallo,
Tipp:
Untersuche Objekte, die Du per Makro ansprichst (hier z.B. oRow1) mit XRay. http://wiki.services.openoffice.org/wik ... #Xray_tool
viele Grüße
Axel
Da ist keine Schleife nötig:bredfeld hat geschrieben:Eine Schleife gebaut und mir 7 Zeilen komplett kopiert genau so wie ich es haben wollte.
Code: Alles auswählen
oDocument = ThisComponent
oSheet1 = oDocument.Sheets.getByIndex(0)
oSheet2 = oDocument.Sheets.getByIndex(1)
' Quellzeilen festlegen
oRow1 = oSheet1.Rows.getByIndex(0) 'Zeile 1 in oSheet1
oQuellRangeAddresse = oRow1.getRangeAddress() 'RangeAddress von Zeile 1 in Sheet1
oQuellRangeAddresse.EndRow = 6 'jetzt RangeAddress von Zeile 1 bis Zeile 7 in Sheet1
' Zielzelle festlegen (muss in Spalte 0 sein)
oZiel = oSheet2.getCellByPosition(0,4) 'Zelle A5 in oSheet2
oZielCellAdresse=oZiel.getCellAddress()
oSheet2.copyRange(oZielCellAdresse,oQuellRangeAddresse) 'Kopiert Zeilen 1:7 aus Sheet1 in Sheet2 ab Zeile 5
Untersuche Objekte, die Du per Makro ansprichst (hier z.B. oRow1) mit XRay. http://wiki.services.openoffice.org/wik ... #Xray_tool
viele Grüße
Axel