Einfaches "Multiplizieren-Makro" in Calc

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: Einfaches "Multiplizieren-Makro" in Calc

Re: Einfaches "Multiplizieren-Makro" in Calc

von plutoluene22 » Fr, 06.03.2015 16:22

Sorry, mit Schalflächen meinte ich, dass ich mit diese in der Symbolleiste baue.

Re: Einfaches "Multiplizieren-Makro" in Calc

von clag » Fr, 06.03.2015 14:52

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)

Code: Alles auswählen

sCalcSign = event.Source.Model.Tag
damit mit diesem einen Makro alle Formelvarianten * / + - erzeugt werden können

Du kannst natürlich auch den Rechenoperator fest vergeben z.B. so

Code: Alles auswählen

sCalcSign = "*"
dann sollte es auch ohne Button funktionieren so wie du es probiert hast

Re: Einfaches "Multiplizieren-Makro" in Calc

von plutoluene22 » Fr, 06.03.2015 10:57

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

von clag » Do, 05.03.2015 12:43

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

von Karolus » Do, 05.03.2015 12:07

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

von clag » Do, 05.03.2015 11:55

Hallo plutoluene22,

was funktioniert nicht, wenn du was wo tust?

Bei welcher Aktion kommt die Fehlermeldung?

Re: Einfaches "Multiplizieren-Makro" in Calc

von plutoluene22 » Do, 05.03.2015 11:38

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

von clag » Do, 05.03.2015 10:40

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
zweiZellenButtonRechnen.ods
(11.7 KiB) 99-mal heruntergeladen
kannst auch mehrere Zellen untereinander markieren, dann werden auch mehrere Formeln generiert

viel Spaß

Re: Einfaches "Multiplizieren-Makro" in Calc

von plutoluene22 » Do, 05.03.2015 10:29

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

von mikeleb » Mi, 04.03.2015 22:49

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

von plutoluene22 » Mi, 04.03.2015 17:16

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

von mikeleb » Mi, 04.03.2015 17:01

Hallo,

bevor du zu Makros greifst. Was ist dein Ziel?
Wenn du in die Zelle E1 die Formel

Code: Alles auswählen

=C1*D1
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?

Einfaches "Multiplizieren-Makro" in Calc

von plutoluene22 » Mi, 04.03.2015 16:03

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.

Nach oben