Seite 1 von 2

(gelößt)Zahlen Addieren

Verfasst: Fr 30. Nov 2018, 22:38
von Taghor01
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

Re: Zahlen Addieren

Verfasst: Sa 1. Dez 2018, 14:29
von mikele
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.

Re: Zahlen Addieren

Verfasst: Sa 1. Dez 2018, 15:03
von Taghor01
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

Re: Zahlen Addieren

Verfasst: Sa 1. Dez 2018, 15:17
von Taghor01
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.

Re: Zahlen Addieren

Verfasst: Sa 1. Dez 2018, 15:45
von mikele
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

Re: Zahlen Addieren

Verfasst: So 2. Dez 2018, 15:28
von Taghor01
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.

Re: Zahlen Addieren

Verfasst: So 2. Dez 2018, 16:15
von Taghor01
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!

Re: Zahlen Addieren

Verfasst: So 2. Dez 2018, 17:23
von mikele
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) 6147 mal betrachtet
Dort wählst du als Ereignis "Inhalt geändert" und weist das Makro zu.

Re: Zahlen Addieren

Verfasst: So 2. Dez 2018, 19:23
von Taghor01
Oh ah funktioniert danke.

Re: Zahlen Addieren

Verfasst: Mi 5. Dez 2018, 22:55
von Taghor01
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