Einfaches "Multiplizieren-Makro" in Calc
Moderator: Moderatoren
-
- *
- Beiträge: 13
- Registriert: Mi, 04.03.2015 15:42
Einfaches "Multiplizieren-Makro" in Calc
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.
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
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?
bevor du zu Makros greifst. Was ist dein Ziel?
Wenn du in die Zelle E1 die Formel
Code: Alles auswählen
=C1*D1
Wozu brauchst du zwingend ein Makros?
Gruß,
mikeleb
mikeleb
-
- *
- Beiträge: 13
- Registriert: Mi, 04.03.2015 15:42
Re: Einfaches "Multiplizieren-Makro" in Calc
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
Hallo,
so sollte es funktionieren:
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.
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
Gruß,
mikeleb
mikeleb
-
- *
- Beiträge: 13
- Registriert: Mi, 04.03.2015 15:42
Re: Einfaches "Multiplizieren-Makro" in Calc
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.
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
Hallo plutoluene,
hier eine etwas gepimpte Variante
kannst auch mehrere Zellen untereinander markieren, dann werden auch mehrere Formeln generiert
viel Spaß
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
viel Spaß
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
-
- *
- Beiträge: 13
- Registriert: Mi, 04.03.2015 15:42
Re: Einfaches "Multiplizieren-Makro" in Calc
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!
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
Hallo plutoluene22,
was funktioniert nicht, wenn du was wo tust?
Bei welcher Aktion kommt die Fehlermeldung?
was funktioniert nicht, wenn du was wo tust?
Bei welcher Aktion kommt die Fehlermeldung?
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Einfaches "Multiplizieren-Makro" in Calc
Vmtl. versucht pluto das Ding aus der IDE zu starten, und nicht wie vorgesehen über die Schaltflächeclag hat geschrieben:Hallo plutoluene22,
was funktioniert nicht, wenn du was wo tust?
Bei welcher Aktion kommt die Fehlermeldung?
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Einfaches "Multiplizieren-Makro" in Calc
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....
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....
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
-
- *
- Beiträge: 13
- Registriert: Mi, 04.03.2015 15:42
Re: Einfaches "Multiplizieren-Makro" in Calc
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.
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
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
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)
Code: Alles auswählen
sCalcSign = event.Source.Model.Tag
Du kannst natürlich auch den Rechenoperator fest vergeben z.B. so
Code: Alles auswählen
sCalcSign = "*"
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
-
- *
- Beiträge: 13
- Registriert: Mi, 04.03.2015 15:42
Re: Einfaches "Multiplizieren-Makro" in Calc
Sorry, mit Schalflächen meinte ich, dass ich mit diese in der Symbolleiste baue.