[gelöst] Wert aus Berechnung in neue Zelle schreiben

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

yeti
*****
Beiträge: 324
Registriert: Mi, 20.10.2004 12:11
Wohnort: Emmendingen

[gelöst] Wert aus Berechnung in neue Zelle schreiben

Beitrag von yeti »

Hallo,

es geht um eine Calc-Tabelle.
Ich möchte gerne den Wert aus einer Zelle (C3) in eine andere Zelle schreiben (D3).
Das Problem ist, daß in der Zelle C3 eine Formel steht (=A3+B3). Hinterher sollen die Spalten A bis C gelöscht werden können.

Gibt es hier ein einfaches Beispiel, daß ich selbst anpassen kann?

Viele Grüße
Yeti
Zuletzt geändert von yeti am So, 31.08.2008 11:28, insgesamt 1-mal geändert.
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Wert aus Berechnung in neue Zelle schreiben

Beitrag von turtle47 »

Hi Yeti,
yeti hat geschrieben:Das Problem ist, daß in der Zelle C3 eine Formel steht (=A3+B3). Hinterher sollen die Spalten A bis C gelöscht werden können.
Das ist kein Problem, da man ja nur den Wert der Zelle auslesen kann um diesen dann in eine andere Zelle zu übertragen.
yeti hat geschrieben:Gibt es hier ein einfaches Beispiel, daß ich selbst anpassen kann?
Ja, wie folgt:

Code: Alles auswählen

Sub Wert_Uebertragen
   odoc = thisComponent
   mysheet = oDoc.sheets(0)'erstes Tabellenblatt
   myValue = mysheet.getcellrangebyname("C3").value
   mysheet.getcellrangebyname("D3").value = myValue
End Sub
Hilft das weiter?

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
yeti
*****
Beiträge: 324
Registriert: Mi, 20.10.2004 12:11
Wohnort: Emmendingen

Re: Wert aus Berechnung in neue Zelle schreiben

Beitrag von yeti »

Hi,

kurz nachdem ich den Beitrag geschrieben habe, hab ich dann gleich als nächstes hier im Forum noch das hier gefunden, was auch funktioniert:

Code: Alles auswählen

Sub Wert_uebernehmen
oCell1 = thisComponent.sheets().getbyname("Test1").getcellrangebyname("C3").value 'lesen
thisComponent.sheets().getbyname("HauptTabelle").getcellrangebyname("D3").Value =oCell1 'schreiben
End Sub
Entsprechend angepasst für eine Zelle funktioniert das auch.
Jetzt hab ich das ganze für einen Zellbereich angepasst und bekomme eine Fehlermeldung.

Code: Alles auswählen

oCell1 = thisComponent.sheets().getbyname("Test1").getcellrangebyname("C3:C6").value 'lesen
thisComponent.sheets().getbyname("Test1").getcellrangebyname("D3:D6").Value =oCell1 'schreiben
End Sub
Fehler:
Basic Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden.

Wie gebe ich einen Zellberiech an? Ich dachte getcellrangebyname würde man so schreiben... ?

Gruß Yeti
yeti
*****
Beiträge: 324
Registriert: Mi, 20.10.2004 12:11
Wohnort: Emmendingen

Re: Wert aus Berechnung in neue Zelle schreiben

Beitrag von yeti »

turtle47 hat geschrieben:....

Hilft das weiter?

Jürgen
Vielen Dank Jürgen,

hat sich direkt mit meiner nächsten Frage überschnitten ;)
Dein Vorschlag und mein gefundener Code sind sozusagen identisch? (Frage, weil ich mich kaum auskenne ;) )

Gruß Yeti
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Wert aus Berechnung in neue Zelle schreiben

Beitrag von turtle47 »

yeti hat geschrieben:Dein Vorschlag und mein gefundener Code sind sozusagen identisch?
Ja.
yeti hat geschrieben:Jetzt hab ich das ganze für einen Zellbereich angepasst und bekomme eine Fehlermeldung.

Code: Alles auswählen

oCell1 = thisComponent.sheets().getbyname("Test1").getcellrangebyname("C3:C6").value 'lesen
Das kann so nicht funktionieren, weil das Variable "oCell1" in Verbindung mit ".Value" nur einen Wert aufnehmen kann und nicht wie in Deinem Beispiel gleichzeitig vier Werte.

Man muss also die Zellen nacheinander abarbeiten.

Code: Alles auswählen

Sub Werte_Uebertragen
   odoc = thisComponent
   mysheet = oDoc.sheets(0)
   for i = 3 to 6
   myValue = mysheet.getcellrangebyname("C" + i).value
   mysheet.getcellrangebyname("D" + i ).value = myValue
   next i
End Sub
Man kann auch mit einem Array arbeiten was den Vorteil hat, dass diese bei grösseren Zellbereichen wesentlich schneller arbeitet.

Code: Alles auswählen

Sub Werte_Uebertragen_Array
	myValue1 = ThisComponent.Sheets().getByIndex(0).getCellRangeByName("C3:C6")
	x = myValue1.getDataArray()
	myValue2 = ThisComponent.Sheets().getByIndex(0).getCellRangeByName("D3:D6")
	myValue2.setDataArray(x())
End Sub
Jürgen
Zuletzt geändert von turtle47 am So, 31.08.2008 12:58, insgesamt 1-mal geändert.
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
yeti
*****
Beiträge: 324
Registriert: Mi, 20.10.2004 12:11
Wohnort: Emmendingen

Re: Wert aus Berechnung in neue Zelle schreiben

Beitrag von yeti »

Super, vielen Dank!
Hab beides probiert und bin sehr glücklich damit ;)

Ich hab die beiden Codes denke ich sogar verstanden...

Gruß Yeti
Antworten