Makro Frage

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro Frage

Re: Makro Frage

von grizzly » Fr, 19.02.2010 18:16

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

Re: Makro Frage

von Charly » Fr, 19.02.2010 07:50

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

Re: Makro Frage

von komma4 » Fr, 19.02.2010 07:15

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

Diesen dispatcher-Kram verstehen nur ganz wenige Spezialisten.

Makro Frage

von grizzly » Do, 18.02.2010 20:58

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

Nach oben