Hallo zusammen,
wie schneide ich Spalten aus und füge diese an anderer Stelle wieder ein?
Bsp.:
Spalte 3 ausschneiden und vor Spalte 7 wieder einfügen
Wie muss der Code aussehen?
Grüßle
Alex
Spalten ausschneiden und an anderer einfügen (per Makro)
Moderator: Moderatoren
hab's gelöst - es funktioniert jetzt.
hier der Code:
--------------------------------------------------------
' --- Variablen deklarieren
DIM document as object
DIM dispatcher as object
DIM Args1(0) As New com.sun.star.beans.PropertyValue
DIM Args2(0) As New com.sun.star.beans.PropertyValue
' --- Spalte ausschneiden
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Args1(0).Name = "ToPoint"
Args1(0).Value = "$G$1:$G$20000"
Dispatcher.executeDispatch (Document, ".uno:GoToCell", "", 0, Args1())
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())
' --- Spalte einfügen
Args2(0).Name = "ToPoint"
Args2(0).Value = "$J$1"
Dispatcher.executeDispatch (Document, ".uno:GoToCell", "", 0, Args2())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
-------------------------------------------------------
Alex
hier der Code:
--------------------------------------------------------
' --- Variablen deklarieren
DIM document as object
DIM dispatcher as object
DIM Args1(0) As New com.sun.star.beans.PropertyValue
DIM Args2(0) As New com.sun.star.beans.PropertyValue
' --- Spalte ausschneiden
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Args1(0).Name = "ToPoint"
Args1(0).Value = "$G$1:$G$20000"
Dispatcher.executeDispatch (Document, ".uno:GoToCell", "", 0, Args1())
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())
' --- Spalte einfügen
Args2(0).Name = "ToPoint"
Args2(0).Value = "$J$1"
Dispatcher.executeDispatch (Document, ".uno:GoToCell", "", 0, Args2())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
-------------------------------------------------------
Alex
Hallo Alex!
Schön, dass du schon eine Lösung gefunden hat.
Ich habe für dich auch noch einen Code, ohne den Makrorekorder, geschrieben. Mit diesem Code fügst du beim 1. Tabellenblatt vor Spalte 7 (Index 6) eine Spalte ein, gibst dieser Spalte die gleiche Breite wie die Spalte 3 (Index 2), verschiebst den Inhalt in die neue Spalten und entfernst die alte Spalte.
Gruß
Charly
Schön, dass du schon eine Lösung gefunden hat.
Ich habe für dich auch noch einen Code, ohne den Makrorekorder, geschrieben. Mit diesem Code fügst du beim 1. Tabellenblatt vor Spalte 7 (Index 6) eine Spalte ein, gibst dieser Spalte die gleiche Breite wie die Spalte 3 (Index 2), verschiebst den Inhalt in die neue Spalten und entfernst die alte Spalte.
Code: Alles auswählen
Sub Spaltenverschieben()
Doc = ThisComponent
Blatt = doc.sheets(0)
Blatt.Columns.insertByIndex(6,1)
Spalte = Blatt.Columns(2)
Spalte1 = Blatt.Columns(6)
Spalte1.width = Spalte.width
Quelle = Spalte.getRangeAddress()
Ziel = Blatt.getCellByPosition(6,0)
ZielAdd = Ziel.getCellAddress()
Blatt.moveRange(ZielAdd, Quelle)
Blatt.Columns.removeByIndex(2,1)
End Sub
Charly