Makro Frage

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

grizzly
Beiträge: 6
Registriert: Do, 18.02.2010 14:39

Makro Frage

Beitrag von grizzly »

Hallo Members,

innerhalb einer Spalte möchte ich eine Addition durchführen (und weitere Rechenoperationen). Das Problem ist, daß sich die Position der Zellen innerhalb der Spalte ändert und ich mit unten stehenden Makro nur die Zellen A1-A2 benützen kann.

Wie müßte ich das Makro ändern, um die Addition an beliebiger Stelle innerhalb der Spalte durchführen zu können?

sub test
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "StringName"
args1(0).Value = "=wert(a1)+2"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())


end sub
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro Frage

Beitrag von komma4 »

Hol Dir Andrews BASIC-Dokument und arbeite mit "richtigem" BASIC.

Diesen dispatcher-Kram verstehen nur ganz wenige Spezialisten.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Makro Frage

Beitrag von Charly »

Hallo!

Ich habe deinen Dispatcher-Code in normales Basic umgesetzt.
Mein Makro trägt die Formel in die aktuell ausgewählte Zelle ein, mit Bezug auf die Spalte A in der gleichen Zeile.

Code: Alles auswählen

Sub Formel_Eintragen

Dok = ThisComponent
Controller = Dok.getCurrentController()
Blatt = Controller.ActiveSheet
Zelle = Dok.getCurrentSelection()
Zeile = Zelle.getCellAddress().row
Spalte = Zelle.getCellAddress().column

'Formel eintragen
Formel = "=Wert(A" & Cstr(Zeile+1) & ") + 2"
Zelle.formulalocal = Formel 

Zelle = Blatt.getCellByPosition(Spalte,Zeile+1)
Controller.select(Zelle)
End Sub
Gruß
Charly
grizzly
Beiträge: 6
Registriert: Do, 18.02.2010 14:39

Re: Makro Frage

Beitrag von grizzly »

Danke für Eure Antworten.

Um ehrlich zu sein, bin ich nicht in der Lage, mit den Programmiersprachen ein Makro zu erstellen. Meine letzten Basic Anwendungen habe ich zum letzten Mal vor 20 Jahren programmiert. Da sind nur noch rudimentäre Erkenntnisse übrig. Ich sitze schon 2 Zage und lese und versuche zu verstehen, aber mir fehlt schlicht alles....Syntax, Befehle,etc...

Wie kann ich mit der Funktion: "Makro aufzeichnen" ein Makro erstellen, das mit einer aktiven Zelle, an beliebiger Stelle, das Makro ausführt und sich nicht auf die Zellen, in denen das Makro aufgezeichnet wurde, bezieht. Nach dem Motto: spring´ (ausgehend von beliebiger Stelle) eine Zeile hoch, merk´dir die Zahl, spring eine Zeile runter und addiere x dazu, spring nach links und setze Text dazu, formatiere ein wenig....

Das Makro hatte ich schon einmal mit Excel aufgezeichnet. Hatte 15min gebraucht und es funktioniert noch immer. Wollte mich eigentlich von MS verabschieden. Aber wenn ich ein abgespecktes Informatik Studium für ein OOo Makro brauche......

Liebe Grüße

Michael
Antworten