Spalten ausschneiden und an anderer einfügen (per Makro)

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

mecki_45
***
Beiträge: 69
Registriert: Mo, 23.02.2004 17:28

Spalten ausschneiden und an anderer einfügen (per Makro)

Beitrag von mecki_45 »

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
mecki_45
***
Beiträge: 69
Registriert: Mo, 23.02.2004 17:28

Beitrag von mecki_45 »

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
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Beitrag von Charly »

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.

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

Gruß
Charly
Antworten