(gelößt)Zahlen Addieren

Alles zur Programmierung im OpenOffice.org
Taghor01
Beiträge: 22
Registriert: Mi 27. Sep 2017, 13:42

(gelößt)Zahlen Addieren

Beitrag von Taghor01 » Fr 30. Nov 2018, 22:38

Guten Nabend,
ich habe mir mal eine Formeln ausgeliehen.
jetzt wollte ich fragen ob mir einer helfen würde diese Formel umzuschreiben.

Im moment macht er es wenn man in Spalte B eine Zahl eingibt das er sie in Spalte C zusammenrechnet ( bis Zeile 200)

Ich würde sie gerne so geändert haben das er aus der festen Adresse B1 die Zahl ausliest und diese mit der jeweiligen Zahl aus der C Reihe addiert
wenn man da was eingibt und dieses in D ausgibt.

Habe schon versucht mich einzulesen bin aber zu blöd.

Code: Alles auswählen

Sub AddItNnow(event)
	odoc=thisComponent
	oSheet = oDoc.sheets(0)
	oZelle = oDoc.getCurrentSelection()
	iStartCol = oZelle.RangeAddress.StartColumn
	iStartRow = oZelle.RangeAddress.StartRow
	if iStartCol = 1 then
		if iStartRow < 200 and iStartRow > 0 then
			addValue = osheet.getCellByPosition(iStartCol,iStartRow).value
			oldValue = osheet.getCellByPosition(iStartCol+1,iStartRow).value
			osheet.getCellByPosition(iStartCol+1,iStartRow).value = oldValue+addValue
		end if
	end if 
end sub


Danke für die Hilfe
Zuletzt geändert von Taghor01 am Di 11. Dez 2018, 20:23, insgesamt 1-mal geändert.

mikele
Beiträge: 508
Registriert: Sa 23. Jul 2011, 22:09

Re: Zahlen Addieren

Beitrag von mikele » Sa 1. Dez 2018, 14:29

Hallo,
wozu möchtest du da ein Makro nehmen.
Wenn du in C2 eine Zahl eingibst, kommt in D2 die Formel:

Code: Alles auswählen

=C2+$B$1
Die Formel kannst du soweit nach unten zeihen, wie du möchstest.
Gruß,
mikele

Taghor01
Beiträge: 22
Registriert: Mi 27. Sep 2017, 13:42

Re: Zahlen Addieren

Beitrag von Taghor01 » Sa 1. Dez 2018, 15:03

Ja ?
hab ich das so schlecht erklärt ? ok dann nochmal.

In B1 steht eine 1 drinnen und in z.b. C4 trage ich jetzt eine 5 ein dann soll er in D4 genau JETZT die Zahl 1+5 = 6 eintragen

so jetzt ändert sich der wert in B1 von 1 auf die 2
dann soll das ergebniss in D4 immer noch 6 sein nämlich die 1+5 = 6 ( bei dir würde er D4 jetzt in 7 ändern was er nicht soll)

jetzt gebe ich in C10 eine 8 ein und soll mir in D10 eine 10 eintragen 2+8=10

jetzt änder ich in B1 die Zahl von 2 auf 3 und er soll mir die anderen Werte aber nicht ändern

Taghor01
Beiträge: 22
Registriert: Mi 27. Sep 2017, 13:42

Re: Zahlen Addieren

Beitrag von Taghor01 » Sa 1. Dez 2018, 15:17

hmm ok bin ich blöd ich habe einfach noch nen

Code: Alles auswählen

    			addValue2 = osheet.getCellByPosition(1,0).value
und das mit dazugerechnet
und rechnen tut er jetzt B1 immer dazu.

mikele
Beiträge: 508
Registriert: Sa 23. Jul 2011, 22:09

Re: Zahlen Addieren

Beitrag von mikele » Sa 1. Dez 2018, 15:45

Hallo,
nun wird es klarer.
Binde folgendes Makro an das Tabellenereignis "Inhalt geändert":

Code: Alles auswählen

Sub addition (oevent)
	if oevent.supportsservice("com.sun.star.sheet.SheetCell") then
		if oevent.celladdress.column=2 then
			otab=oevent.spreadsheet
			otab.getcellbyposition(3,oevent.celladdress.row).value=otab.getcellbyposition(1,0).value+oevent.value
		end if
	end if
End Sub
Gruß,
mikele

Taghor01
Beiträge: 22
Registriert: Mi 27. Sep 2017, 13:42

Re: Zahlen Addieren

Beitrag von Taghor01 » So 2. Dez 2018, 15:28

Das sollwas machen ? wie soll ich das einbinden zu "inhalt ändern"
ich habe die Macros extra nur in das Blatt eingebunden so das man es auch von anderen Rechnern benutzen kann.
als einzelndes Macro gibt er mir auf jedenfall einen fehler aus.

Taghor01
Beiträge: 22
Registriert: Mi 27. Sep 2017, 13:42

Re: Zahlen Addieren

Beitrag von Taghor01 » So 2. Dez 2018, 16:15

Hmm hab jetzt ein ganz anderes Problem.
Die Formel hatt ich komplett als Testdatei runtergeladen.
Und diese habe ich bearbeitet, und sie geht in dieser Testdatei oder davon anderen gespreicherten Dateien immer noch.

Jetzt habe ich die Formel rauskopiert und in meine andere Datei unter den Macro eingefügt und siehe da es geht nicht mehr ???

kann es damit zusammenhängen das die Testdatei " Tabelle 1 " hieß also Deutsch scheinbar erstellt worden ist.
und meine neuen Dateien warum auch immer mit Sheet 1 erstellt werden ?
und was würde die datei auf einem anderen Rechner anstellen ? geht oder geht nicht ?

Fehler:
Ein Scripting Framwork Fehler trat während der Ausführung von Basic script Standard.Module1.AdditNnow auf.
Meldung: wrong number of Parameters!

mikele
Beiträge: 508
Registriert: Sa 23. Jul 2011, 22:09

Re: Zahlen Addieren

Beitrag von mikele » So 2. Dez 2018, 17:23

Hallo,
das Makro erwartet einen Parameter beim Aufruf (nämlich die Zelle, in der gerade eine Zahl eingegeben wurde). Daher führt der direkte Aufruf zu einer Fehlermeldung.
Das Makro wird in der Datei gespeichert. Dann klickst du mit der rechten Maustaste auf den Tabellenreiter ("Tabelle 1" oder "Sheet 1" ist egal) und dann auf Tabellenereignisse.
bildschirm.png
bildschirm.png (30.02 KiB) 161 mal betrachtet
Dort wählst du als Ereignis "Inhalt geändert" und weist das Makro zu.
Gruß,
mikele

Taghor01
Beiträge: 22
Registriert: Mi 27. Sep 2017, 13:42

Re: Zahlen Addieren

Beitrag von Taghor01 » So 2. Dez 2018, 19:23

Oh ah funktioniert danke.

Taghor01
Beiträge: 22
Registriert: Mi 27. Sep 2017, 13:42

Re: Zahlen Addieren

Beitrag von Taghor01 » Mi 5. Dez 2018, 22:55

Hallo,
meine Formel wurde gerade hier schon weiter verbessert . Habe noch ne Frage
ich würde gerne Die Zahl die ich in Spalte D eintrage und dann in G nochmal vom Macro eingetragen wird.
Naja ich würde gerne die ganzen Zahlen die ich in D eintrage das die hinten ca. 30 Posistionen weiter rechts nochmal eingetragen werden
aber auf einer Breite von ca. 50 oder 100 Einträgen und dann vieleicht wieder von vorne anfängt.
Ich habe gestern schon mit nen paar schleifen usw rumgepielt und er hatte auch mal was eingetragen nur nich so wie ich es wollte :-)
vieleicht hat ja einer eine Anregung für mich.

Code: Alles auswählen

Sub AddItNnow(event)
	odoc=thisComponent
	oSheet = oDoc.sheets(0)
	oZelle = oDoc.getCurrentSelection()
	iStartCol = oZelle.RangeAddress.StartColumn
	iStartRow = oZelle.RangeAddress.StartRow

	if iStartCol = 3 then

		if iStartRow < 200 and iStartRow > 1 then   rem Zeilen begrenzung
		addValueMaxHp = osheet.getCellByPosition(iStartCol+2,iStartRow).value rem Spalte F auslesen. addValueMaxHp
		addValue = osheet.getCellByPosition(iStartCol,iStartRow).value REM Spalte D auslesen. addValue Schaden
 		addValue2 = osheet.getCellByPosition(iStartCol+1,iStartRow).value  REM Spalte E auslesen. addValue2 (mom.HP)

	    	if addValueMaxHp = 0 then
			osheet.getCellByPosition(iStartCol+2,iStartRow).string = "Max.HP"  rem addValueMaxHp
			osheet.getCellByPosition(iStartCol,iStartRow).string = ""
	    	else

 					if osheet.getCellByPosition(iStartCol+1,iStartRow).type = 0 then '  liefert True, wenn die Zelle leer ist
    				osheet.getCellByPosition(iStartCol+1,iStartRow).value = addValueMaxHp-addValue
					osheet.getCellByPosition(iStartCol+3,iStartRow).value = addValue
  					osheet.getCellByPosition(iStartCol,iStartRow).string = ""

					else
					osheet.getCellByPosition(iStartCol+1,iStartRow).value = addValue2-addValue
					osheet.getCellByPosition(iStartCol+3,iStartRow).value = addValue
					osheet.getCellByPosition(iStartCol,iStartRow).string = ""
	

  	      		 	end if
  
  
    		end if

		end if
	end if 

end sub
So wenn ich jetzt in D7 eine Zahl eintrage dann rechnet er damit und trägt sie in G7 nochmal ein
jetzt wollte ich gerne das er die nochmal in Z.b. BA7 einträgt
dann gebe ich in D7 die nächste Zahl ein die er in G7 einträgt und jetzt zuzätzlich in BB7 einträgt usw BC7 ....


Diesen Post habe ich im anderen Forum auch gepostet.
http://www.oooforum.de/viewtopic.php?f= ... cf#p279746

Antworten