von bredfeld » So, 10.06.2012 10:45
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 ?
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
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 ?
[code]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[/code]