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
Makro Frage
Moderator: Moderatoren
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makro Frage
Hol Dir Andrews BASIC-Dokument und arbeite mit "richtigem" BASIC.
Diesen dispatcher-Kram verstehen nur ganz wenige Spezialisten.
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)
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)
Re: Makro Frage
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.
Gruß
Charly
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
Charly
Re: Makro Frage
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
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