Seite 1 von 1
Einfaches "Multiplizieren-Makro" in Calc
Verfasst: Mi, 04.03.2015 16:03
von plutoluene22
Hallo Leute,
ich bin Neueinsteiger bei OpenOffice und habe ein kleine Problem bei der Makroerstellung in Calc.
Ich möchte ein Makro erstellen, welches die beiden Zellen links von der aktiven Zelle miteinander multipliziert. Der Makrorekorder hat dazu folgendes aufgezeichnet:
sub Multiplizieren
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 = "=C10*D10"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())
end sub
Das Problem ist, dass das Makro immer nur die Zellen C10*D10 multipliziert, nicht aber die Zellen links neben der aktiven Zelle.
Habe leider im Forum keinen passenden Beitrag gefunden. Vilen Dank schon im Voraus.
Re: Einfaches "Multiplizieren-Makro" in Calc
Verfasst: Mi, 04.03.2015 17:01
von mikeleb
Hallo,
bevor du zu Makros greifst. Was ist dein Ziel?
Wenn du in die Zelle E1 die Formel
schreibst und diese zelle dann an eine beliebige Stelle kopierst, berechnet sie dir dort das Produkt der beiden Zellen links von ihr (Stichwort: relative Addressierung).
Wozu brauchst du zwingend ein Makros?
Re: Einfaches "Multiplizieren-Makro" in Calc
Verfasst: Mi, 04.03.2015 17:16
von plutoluene22
ich habe mir in Excel schaltflächen gebaut mit den Verschiedensten Operationen, z.B. +,-,*,/,+%,-% , um beim rechnen schneller darauf zugreifen zu können.
Re: Einfaches "Multiplizieren-Makro" in Calc
Verfasst: Mi, 04.03.2015 22:49
von mikeleb
Hallo,
so sollte es funktionieren:
Code: Alles auswählen
Sub mutliplikation
odoc=thiscomponent
oblatt=odoc.sheets(0)
osel=odoc.getcurrentselection()
checkzelle=HasUnoInterfaces( osel, "com.sun.star.table.XCell" )
if checkzelle then
nrow=osel.getrangeaddress().startrow
ncolumn=osel.getrangeaddress().startcolumn
if ncolumn>1 then
op1=oblatt.getcellbyposition(ncolumn-2,nrow).value
op2=oblatt.getcellbyposition(ncolumn-1,nrow).value
osel.value=op1*op2
end if
end if
End Sub
Die zwei If-Bedingungen fangen ab, dass die Multiplikation nur ausgeführt wird, wenn eine einzelen Zelle markiert ist und diese sich min. in Spalte C befindet.
Re: Einfaches "Multiplizieren-Makro" in Calc
Verfasst: Do, 05.03.2015 10:29
von plutoluene22
Vielen Dank für die schnelleHilfe, das Makro funktioniert.
Der einzige Nachteil und Unterschied zu meinen Makros in Excel ist, dass in der Befehlsleiste deines Makros nur das Ergebnis als Zahl steht und nicht als Formel, so dass man damit nicht als Formel weiterarbeiten kann.
Re: Einfaches "Multiplizieren-Makro" in Calc
Verfasst: Do, 05.03.2015 10:40
von clag
Hallo plutoluene,
hier eine etwas gepimpte Variante
Code: Alles auswählen
sub CalcTwoCells(event)
odoc=thisComponent
oSheet = oDoc.sheets(0)
oZelle = oDoc.getCurrentSelection()
iStartCol = oZelle.RangeAddress.StartColumn
iStartRow = oZelle.RangeAddress.StartRow
iEndRow = oZelle.RangeAddress.EndRow
sCalcSign = event.Source.Model.Tag
if iStartCol < 2 then
msgbox "links müssen sich midestens 2 Zellen befinden"
exit sub
end if
for i = iStartRow to iEndRow
aCellNameA = split(oSheet.getCellByPosition(iStartCol-2,i).absoluteName,".")
aCellNameB = split(oSheet.getCellByPosition(iStartCol-1,i).absoluteName,".")
'für absolute Adressen
' oSheet.getCellByPosition(iStartCol,i).formula = _
' "=" & aCellNameA(1) & sCalcSign & aCellNameB(1)
'für einfache Adressen
oSheet.getCellByPosition(iStartCol,i).formula = _
"=" & Join(split(aCellNameA(1),"$"),"") & sCalcSign & Join(split(aCellNameB(1),"$"),"")
next
end sub
kannst auch mehrere Zellen untereinander markieren, dann werden auch mehrere Formeln generiert
viel Spaß
Re: Einfaches "Multiplizieren-Makro" in Calc
Verfasst: Do, 05.03.2015 11:38
von plutoluene22
Hallo clag,
vielen Dank für Deine Mühe.
Makro funftioniert leider nicht - Fehlermeldung: Ein Scripting Framework Fehler trat während der Ausführung vom Basic-Skript Standard.Module1.CalcTwoCells auf.
Meldung: wrong number of parameters!
Re: Einfaches "Multiplizieren-Makro" in Calc
Verfasst: Do, 05.03.2015 11:55
von clag
Hallo plutoluene22,
was funktioniert nicht, wenn du was wo tust?
Bei welcher Aktion kommt die Fehlermeldung?
Re: Einfaches "Multiplizieren-Makro" in Calc
Verfasst: Do, 05.03.2015 12:07
von Karolus
clag hat geschrieben:Hallo plutoluene22,
was funktioniert nicht, wenn du was wo tust?
Bei welcher Aktion kommt die Fehlermeldung?
Vmtl. versucht pluto das Ding aus der IDE zu starten, und
nicht wie vorgesehen über die Schaltfläche
Re: Einfaches "Multiplizieren-Makro" in Calc
Verfasst: Do, 05.03.2015 12:43
von clag
Hallo Karolus,
jetzt wo du es so schreibst, ist das wohl die naheliegendste Erklärung.
Hatte darum die Beispieldatei dazu gepackt, damit man das Makro erst einmal ausprobieren kann.
Naja vieleicht meldet plutoluene22 ja noch und klärt auf wie wo was warum....
Re: Einfaches "Multiplizieren-Makro" in Calc
Verfasst: Fr, 06.03.2015 10:57
von plutoluene22
Hallo, bin erst jetzt wieder online.
Also, ich habe das Makro in die OpenOffice Basic geschrieben und dann über Extras-Makros-Makros ausführen aktiviert.
Re: Einfaches "Multiplizieren-Makro" in Calc
Verfasst: Fr, 06.03.2015 14:52
von clag
Hallo plutoluenne22,
hast du dir die Beispieldatei einmal angeschaut?
du hattest von Schaltflächen geschrieben die das Einfügen der Formeln auslösen !?
wie kommst du nun darauf da mein Makro ohne Schaltfläche auskommt (was natürlich auch funktioniert)
aber dieses Makro fragt den Rechenoperator von der Schaltfläche ab, (Zusatzinformation der Schaltfläche)
damit mit diesem einen Makro alle Formelvarianten * / + - erzeugt werden können
Du kannst natürlich auch den Rechenoperator fest vergeben z.B. so
dann sollte es auch ohne Button funktionieren so wie du es probiert hast
Re: Einfaches "Multiplizieren-Makro" in Calc
Verfasst: Fr, 06.03.2015 16:22
von plutoluene22
Sorry, mit Schalflächen meinte ich, dass ich mit diese in der Symbolleiste baue.